2016-07-25 163 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")测试将失败,但自定义错误消息将被忽略。

相关问题