2012-07-08 139 views
2

我對node.js相當陌生,並且不理解assert模塊。這樣做的目的是什麼?我試圖檢查一個特定的值是否等於我定義的值,但是應用程序崩潰(它會說)它是假的。人們會使用斷言的原因是什麼?用if語句檢查相同的東西還是這不正確?如果斷言失敗,請繼續執行腳本

基本上我使用zombie.js來獲取輸入表單的值。

assert.equal(browser.field('name').value, 'Mike'); 

VS

if(browser.field('name').value == 'Mike'){ 
    //continue 
    } 
+0

你讀過[上斷言維基百科的解釋(http://en.wikipedia.org/wiki/Assertion_(計算))? – DCoder 2012-07-08 05:25:14

+0

@DCoder我明白了,所以只用它你認爲它應該永遠是真的? – 2012-07-08 05:27:49

回答

2

斷言是用於測試和表面bug的。這是一樣的事情。

基本上,根據您編程的邏輯,您置入assert的條件是您相信的東西(作爲程序員)絕對肯定必須是真實的。除此之外的任何事情都是不可能的。

如果一個斷言觸發,它表明某種事情已經發生,讓事情處於一個程序員認爲不可能的狀態。因此,正確的做法是停止執行。

所以斷言通常不應該用於正常的程序流程(包括錯誤檢查)。他們應該只用於「哇,嘿,這應該是不可能的」的事情。

對於您的情況,您絕對需要if而不是一個斷言,因爲聲明可能是false的可能性絕對是您期望隨時發生的事情。關於斷言

更多信息:http://en.wikipedia.org/wiki/Assertion_(computing

+0

感謝您的真棒解釋,必須感謝!我現在明白了。 – 2012-07-08 05:57:09

2

斷言語句被用於測試,如在單元測試。測試引擎在失敗時捕獲assert語句拋出的特定類型的錯誤,併爲您提供有關失敗的信息。編寫好的簡單測試是良好編程的關鍵。

+0

感謝您的回覆,感謝! – 2012-07-08 10:00:03