QUnit有一个断言用于测试函数引发异常(QUnit/raises)。是否可以 - 使用QUnit - 断言函数不会引发异常。
我意识到可以像下面的代码一样测试它:
try {
theTest();
ok(true);
} catch (e) {
ok(false, "Expected to succeed");
}
但我认为应该可以使用QUnit。有线索吗?
答案 0 :(得分:16)
qunit中没有这样的方法
但是,如果您只是编写以下代码,该代码要短得多,您将获得相同的结果并带来额外的好处
theTest();
ok(true, "My function does not crash");
1 /如果测试代码引发异常,qunit会将测试标记为失败。
2 /如果选中“no try / catch”复选框,您将能够调试抛出异常的位置,而try / catch不是这种情况
答案 1 :(得分:2)
我遇到了与您在评论中提到的问题相同的问题,即我的测试没有测试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: ...