34
如果我的測試代碼中永遠不應該達到(例如承諾序列的fail
子句),我該如何強制 - 測試失敗?強制失敗茉莉花測試
我使用類似expect(true).toBe(false);
的東西,但這不太好。
另一種方法是等待測試超時,這是我想避免的(因爲它很慢)。
如果我的測試代碼中永遠不應該達到(例如承諾序列的fail
子句),我該如何強制 - 測試失敗?強制失敗茉莉花測試
我使用類似expect(true).toBe(false);
的東西,但這不太好。
另一種方法是等待測試超時,這是我想避免的(因爲它很慢)。
茉莉花提供了一個全球性的方法fail()
,它可以規範塊it()
內使用,並允許使用自定義錯誤消息:
it('should finish successfully', function (done) {
MyService.getNumber()
.success(function (number) {
expect(number).toBe(2);
done();
})
.fail(function (err) {
fail('Unwanted code branch');
});
});
這是內置了茉莉花的功能,它無處不在正常工作中比較我在下面提到的'錯誤'方法。
更新之前:
您可以從代碼分支拋出一個錯誤,它會立即失敗,一個規範,你就能夠提供自定義錯誤消息:
it('should finish successfully', function (done) {
MyService.getNumber()
.success(function (number) {
expect(number).toBe(2);
done();
})
.fail(function (err) {
throw new Error('Unwanted code branch');
});
});
但你應該小心,如果你想從Promise成功處理程序then()
中拋出一個錯誤,因爲錯誤將會被吞噬並永遠不會出現。此外,您應該瞭解應用程序中可能的錯誤處理程序,這可能會在您的應用程序中發現此錯誤,因此無法通過測試。
還有'done.fail('message')'。 – TrueWill
對於那些停留在較舊版本的Jasmine中的人,'失敗'方法在1.3中不可用,但可以通過'throw new Error(message)'有效地填充。效果可以取決於你的測試運行者 - 也可以考慮像'expect('[失敗的原因]')toBeNull()'。 – ryanwebjackson