我正在为我的自定义 requirejs 加载程序编写测试。对于格式错误的输入,它应该会引发错误。
我正在使用 mocha
和普通的 node-assert
来测试它,如下所示:
it('throws a SyntaxError on malformed input', function(done){
assert.throws(function(){ requirejs(['myLoader!malformedInput'], Function.prototype) }, SyntaxError);
done();
});
测试失败是因为:
AssertionError: Missing expected exception (SyntaxError)..
据我了解reading the docs on assert我的语法应该没问题。错误消息也有点难以理解。
我最好的猜测是,这是由于 requirejs
调用是异步的,但在这种情况下我不知道何时调用 done
?
或者我是否误解了 requirejs
将处理我传递给 onload.error(e)
的错误的方式?
最佳答案
assert.throws
不适用于异步引发的异常。这是一个如何使用 RequireJS errback 完成的示例:
var assert = require("assert");
var requirejs = require("requirejs");
requirejs.config({
baseUrl: ".",
});
it('throws a SyntaxError on malformed input', function (done){
requirejs(['fail'], function (fail) {
// This should not be called.
throw new Error("We were expecting a failure but none occurred!");
}, function (err) {
assert(err.originalError instanceof SyntaxError,
"We should get a SyntaxError.");
done();
});
});
fail.js
文件应该包含无意义的代码(即生成 SyntaxError
)。传递给 requirejs
的第二个函数是加载失败时调用的 errback。
关于testing - 断言错误 : Missing expected exception when testing async requirejs call using mocha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26073873/