gpt4 book ai didi

javascript - Chai 中的 “assert” 、 “expect” 和 “should” 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 13:19:35 27 4
gpt4 key购买 nike

assertexpectshould 有什么区别?什么时候用什么?

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

var foo = 'bar';

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

foo.should.equal('bar');

最佳答案

区别是documented there .

这三个接口(interface)呈现不同风格的执行断言。最终,他们执行相同的任务。一些用户更喜欢一种风格而不是另一种风格。话虽如此,还有一些技术考虑值得强调:

  1. assertexpect 接口(interface)不会修改 Object.prototype,而 should 会。因此,在您不能或不想更改 Object.prototype 的环境中,它们是更好的选择。

  2. assertexpect 接口(interface)几乎在任何地方都支持自定义消息。例如:

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

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

(历史记录:很长一段时间以来,此答案都表明要获得带有 expect 的自定义消息,您必须使用解决方法。Aurélien Ribon 告诉我将消息传递给 expect 作为第二个参数有效。因此,不需要解决方法。我无法找到哪个版本的 Mocha 开始支持此消息,也无法找到哪个版本文档的版本第一次记录了它。)

注意 assert.isTrue(foo)expect(foo).to.be.truefoo.should.be.true 如果不使用自定义消息,都输出如下,foo === 1:

    AssertionError: expected 1 to be true

因此,虽然 expectshould 界面更易于阅读,但在以下情况下,一个界面并不比另一个界面更自然地提供信息断言失败。此消息对于所有三个接口(interface)都是相同的,它并没有告诉您 什么 您正在测试,只是您得到的值是 1 但您想要 true 。如果你想知道你在测试什么,你需要添加一条消息。

关于javascript - Chai 中的 “assert” 、 “expect” 和 “should” 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21396524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com