QUnit有一個斷言,用於測試函數是否引發異常(QUnit/raises)。是否有可能 - 使用QUnit - 斷言功能不會引起例外。如何斷言函數不會引發異常
我意識到,它可以測試它像下面的代碼:
try {
theTest();
ok(true);
} catch (e) {
ok(false, "Expected to succeed");
}
但我認爲它應該使用QUnit成爲可能。任何線索?
QUnit有一個斷言,用於測試函數是否引發異常(QUnit/raises)。是否有可能 - 使用QUnit - 斷言功能不會引起例外。如何斷言函數不會引發異常
我意識到,它可以測試它像下面的代碼:
try {
theTest();
ok(true);
} catch (e) {
ok(false, "Expected to succeed");
}
但我認爲它應該使用QUnit成爲可能。任何線索?
有一個在qunit沒有這樣的方法
但是,如果你只寫了下面的代碼要短得多,你將獲得相同的結果與其它附加的好處
theTest();
ok(true, "My function does not crash");
1 /如果代碼的測試會引發異常,qunit會將測試標記爲失敗。
2 /如果你勾選「無的try/catch」複選框,您將能夠調試在異常被拋出,這是不符合你的try/catch的情況下
我有同樣的問題,因爲你在評論中提到,我的測試沒有測試Error
將被拋出,將會「不好」地顯示格式錯誤的Died on test #1
消息,而沒有任何有用的信息。
我最終使用了兩者的混合;一個測試爲raises()
,另一個爲try/catch
。
我用加註(),用於在此進行測試,一個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: ...
以上是基於假設您正在測試託管自定義拋出錯誤,並且您的'myFunction()'確實執行了故意拋出新錯誤...)'給出了一定的無效條件。你不應該考慮當然的意外錯誤。 – Nope 2013-12-05 12:24:16
檢查這個http://stackoverflow.com/questions/10190392/asserting-that-a-function-throws-exceptions-with-qunit它可以幫助 – hanane 2014-03-30 20:44:12