我遇到了与您在评论中提到的相同的问题,即我的测试未抛出 Error 将停止“严重”地显示格式错误的 Died on test #1 消息而没有任何有用信息。
我最终将两者混合使用; raises() 用于一项测试,try/catch 用于另一项测试。
我使用 raises() 来测试是否抛出了 Error,类似于:
test("When myFunction() is called with a invalid instance Then Error is thrown", function () {
// Arrange
var testInstance = {};
// Act
raises(function() {
myFunction(testInstance);
}, Error, "myFunction() should throw an Error");
// Assert
// raises() does assertion
});
如果上面抛出一个Error,一切都很好,如果不是很好的格式化消息,则会显示,类似于:
myFunction() should throw Error
Result: No exception was thrown.
然后我使用try/catch 进行必须确保没有Error 被抛出的测试,类似于:
test("When myFunction() is called with a valid instance Then no Error is thrown", function () {
// Arrange
var testInstance = new myObject();
var result;
// Act
try {
myFunction(testInstance);
result = true;
} catch(error) {
result = false;
}
// Assert
ok(result, "myFunction() should not throw an Error");
});
如果上面没有抛出Error,一切都很好,如果抛出Error,则会显示一条格式良好的消息,类似于:
myFunction() should not throw an Error
Source: ...