testing - 断言错误 : Missing expected exception when testing async requirejs call using mocha

标签 testing requirejs mocha.js amd node-assert

我正在为我的自定义 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/

相关文章:

testing - dependabot 是否进行测试以确保它不会破坏构建?

performance - c++,cin 有问题吗?

javascript - 如何在单元测试中模拟 RequireJs 加载器插件响应

node.js - 如何在不继续的情况下完全结束 Node Mocha 中的测试

javascript - Mocha/Should.js 使用异步函数

javascript - 如何在 Jest 中的多个测试套件之间共享一个对象?

selenium - Selenoid:录制正在运行的 session 的视频

javascript - 依赖项中的 "./has!dom-addeventlistener?:./aspect"是什么意思?

dependency-injection - Bower 和 AMD 模块

javascript - 使用 Sinon.js 测试 navigator.browserLanguage 或 navigator.language