【问题标题】:Should we prefer Chai's `to.be.an('undefined')` vs `to.equal(undefined)`?我们应该更喜欢 Chai 的 `to.be.an('undefined')` 还是 `to.equal(undefined)`?
【发布时间】:2019-09-16 08:21:52
【问题描述】:

遗憾的是,在 Chai 中做事的方式不止一种。

使用to.be.an('undefined') 而不是to.equal(undefined) 有什么好处吗?

我的直觉是重用/重新创建未定义是有代价的。我们的测试运行器为各个测试提供了时间,似乎更重要的是哪个首先运行(在测试手表上,第二个更快,但进行两次单独运行意味着它们都需要大约 2 秒(完全设置))。

【问题讨论】:

  • 我想不出有什么不同。更喜欢你更喜欢的,我个人会选择第二个
  • to.equal(undefined) 的一个好处是 IMO 更具可读性。
  • 我个人更喜欢 Assert 版本:chai.assert.isUndefined(foo)
  • 我更喜欢to.be.undefined

标签: javascript chai


【解决方案1】:

我认为这并不重要。我设法找到最接近答案的是this article

从这个意义上说,用类人语言编写期望,使用 expectshould 的声明式 BDD 样式,而不是使用自定义代码。

作者似乎没有区分两者,甚至您的测试也表明它们或多或少相等。

我说随便什么都行。

编辑

基于this stack overflow answer

属性嵌套越深,执行属性查找所需的时间就越长。

这意味着 to.be.an('undefined') 由于额外的查找实际上会比 to.equal(undefined) 慢,但 IMO 附带的 prototype 污染可能会产生误报。

真的和以前一样的结论:选择有意义的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2015-06-13
    • 2011-11-29
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多