2014-03-01 76 views
15

我熟悉python unittest測試,如果斷言失敗,那個測試被標記爲「失敗」,並且它轉移到其他測試。另一方面,茉莉花將繼續貫穿所有的期望,即使其中一個失敗。如何讓Jasmine在第一次期望失敗後停止處理測試?第一次預期失敗後停止茉莉花測試

it ("shouldn't need to test other expects if the first fails", function() { 
    expect(array.length).toBe(1); 

    // don't need to check this if the first failed. 
    expect(array[0]).toBe("foo"); 
}); 

我在想它錯嗎?我有很多expect的測試,看起來像是一個浪費,顯示所有的堆棧痕跡,當只有第一個錯誤真的。

+1

如果每次測試都有太多斷言,那麼您的代碼每次測試過多。以這種方式進行開發可能會更容易,但是要知道未來測試失敗時問題出現在何處(難道這就是測試點,不是?)要告訴未來他/她創建的開發人員一個bug)。我發現茉莉花在第一次預期時並不會停止,它表明一切都出了問題,而不是先發生了什麼問題。無論如何,至於這個問題本身,我已經看了一下,並沒有發現任何東西讓第一次失敗後退出。 – acdcjunior

回答

7

茉莉花不支持早期失敗,在一個單一的規範。這個想法是爲了給你所有的失敗,以幫助找出你的規範中真正的錯誤。

+1

在OPs這樣的情況下你有什麼建議?我們是否應該在預期後檢查(array.length).toBe(1);並提前回來? – erkangur

7

@格雷格的回答對當時最新版本的茉莉花是正確的(v2.0.0)。

然而,自那時起,這一新功能是addedv2.3.0

允許用戶時的預期出現故障停止規範執行(修正#577

它通過增加throwFailures=true活化跑步者頁面的查詢字符串,例如:

http://localhost:8000/?throwFailures=true 
+1

要使用node.js中的新特性,請在'jasmine.json'的頂層設置''stopSpecOnExpectationFailure:true'或者運行'jasmine --stop-on-failure = true'(混淆了'--stop失敗「被無聲地忽略)。如果給定,標誌覆蓋配置。 –

+3

@ beni-cherniavsky-paskin @tachyonvortex,但使用'stopSpecOnExpectationOnFailure'停止整個測試...有一種方法*只有*停止一個'it'(測試)? –