2016-07-25 43 views

回答

4

我從docs的理解是,.to.be和各種的期望其他片/如果語法只是語法糖,沒有真正的功能。

所以.to.be.true === .true.to.equal(true) === .equal(true)。所以,如果有的話,差異在.true.equal(true)之間 - 並且沒有任何區別; .true只是.equal(true)的語法簡寫。

1

他們測試同樣的事情。換句話說,無論哪裏.to.equal(true)失敗,.to.be.true也將失敗,並且.to.equal(true)成功,.to.be.true也成功。

然而,它們的區別在於.to.equal需要而.to.be.true一個可選的自定義錯誤消息並不需要自定義錯誤消息。

var settings = { 
    verbose: "foo" 
}; 
settings.verbose.should.equal(true, "verbose setting"); 

會顯示類似的錯誤消息:

AssertionError: verbose setting: expected 'foo' to equal true 

同樣的事情expect(settings.verbose).to.equal(true, "verbose setting")。如果沒有自定義錯誤信息,錯誤將是:

AssertionError: expected 'foo' to equal true 

如果使用expect(settings.verbose).to.be.true("verbose setting")測試將失敗,但自定義錯誤消息將被忽略。

相關問題