to.equal(true)和to.be.true之间有什么区别?

时间:2016-07-25 19:46:48

标签: unit-testing mocha chai

我正在学习摩卡和柴。

我尝试了解何时必须使用to.equal(true)to.be.true来了解哪种情况在不同情况下会更好。

谢谢!

3 个答案:

答案 0 :(得分:4)

我对docs的理解是.to.be以及Expect / Should语法的其他各个部分只是语法糖,没有真正的功能。

所以.to.be.true === .true.to.equal(true) === .equal(true)。因此差异(如果有的话)介于.true.equal(true)之间 - 并且没有任何区别; .true只是.equal(true)的一种语法简写。

答案 1 :(得分:3)

他们测试同样的事情。换句话说,只要.to.equal(true)失败,.to.be.true也会失败,.to.equal(true)成功,.to.be.true也会失败1}}。

但是,确实存在差异.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"),测试将失败,但自定义错误消息将被忽略。

答案 2 :(得分:1)