摩卡 – 断言,期望和应该在柴间有什么区别?

断言,期望和应该有什么区别,什么时候使用什么?

assert.equal(3, '3', '== coerces values to strings');

var foo = 'bar';

expect(foo).to.equal('bar');

foo.should.equal('bar');
差异是documented there

三个接口呈现不同风格的执行断言。最终,他们执行相同的任务。一些用户喜欢一种风格超过另一种。这就是说,还有一些技术上的考虑值得强调:

> assert和expect接口不修改Object.prototype,而应该修改。所以他们是一个更好的选择,在一个环境中,你不能或不想改变Object.prototype。
> assert和expect接口支持自定义消息。例如:

assert.isTrue(foo, "foo should be true");
expect(foo, "foo should be true").to.be.true;

如果断言失败,则消息“foo应该为true”将与失败的断言一起输出。您没有机会使用应用程序界面设置自定义消息。

(历史记录:很长时间以来,这个回答说,要得到一个自定义消息与期望,你必须使用一个解决方法Aurélien Ribon告诉我,传递一个消息,期望作为第二个参数的工作原因,因此,没有必要解决方法我找不到哪个版本的Mocha开始为此邮件提供支持,也没有找到哪个版本的文档第一次记录它。)

请注意,如果不使用自定义消息,则assert.isTrue(foo),expect(foo).to.be.true和foo.should.be.true将输出以下内容,foo === 1:

    AssertionError: expected 1 to be true

因此,虽然expect和should接口更好阅读,但是当断言失败时,不是一个接口比其他接口更自然地提供信息。这个消息对于所有三个接口都是相同的,并不告诉你究竟是什么测试,只是你得到的值是1,但你想要true。如果你想知道你正在测试什么,你需要添加一条消息。

http://stackoverflow.com/questions/21396524/what-is-the-difference-between-assert-expect-and-should-in-chai

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:摩卡 – 断言,期望和应该在柴间有什么区别?