你所描述的是摩卡的正常行为。此代码说明,如果你不尝试在异步代码(甚至断言失败引发),以及如果你想避免未捕获的异常消息,你可以做捕获异常会发生什么:
var assert = require("assert");
it("fails with uncaught exception", function (done) {
setTimeout(function() {
assert.equal(1, 2);
done();
}, 1000);
});
it("fails with assertion error", function (done) {
setTimeout(function() {
try {
assert.equal(1, 2);
done();
}
catch (e) {
done(e);
}
}, 1000);
});
上面的代码生成此输出:
1) fails
2) fails
0 passing (2s)
2 failing
1) fails:
Uncaught AssertionError: 1 == 2
at null._onTimeout (/tmp/t2/test.js:5:16)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
2) fails:
AssertionError: 1 == 2
at null._onTimeout (/tmp/t2/test.js:13:20)
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
你是完全正确的! 我只是想说Mocha使用断言库时通过失败它们来引发异常(我没有意识到这一点)。 – user3452075