【问题标题】:Formatting objects in chai.expect errors在 chai.expect 错误中格式化对象
【发布时间】:2014-04-30 09:16:08
【问题描述】:

当测试失败时,我使用expect(x).to.deep.equal(y) 比较两个对象,我想在浏览器测试报告中查看实际值。相反,我看到的是这样的:

AssertionError: expected { Object (x, y, ...) } to deeply equal { Object (x, y, ...) }

所以它并没有真正显示出任何有用的东西。

有没有办法自定义 chai.js 如何格式化这些对象?

【问题讨论】:

  • 我发布了一个类似的问题。我没有解决方案,所以在这里评论:有人可以解释为什么在失败的断言中吐出对象上的原型属性和函数之类的东西会有用吗?这是为什么输出通常太大并且被截断或(如果设置为零截断)太长且难以阅读的重要部分。最好有一个选项更喜欢使用 toString(),因为我经常将这些方法添加到我自己的对象/类中以用于开发目的或其他目的,这在测试输出中会更有用
  • ...这是@JasonBoyd 提到的类似问题的链接:How can I get Chai to show actual and expected values using toString()

标签: mocha.js chai


【解决方案1】:

您现在可以根据the docs 配置对象被截断之前的最大长度:

chai.config.truncateThreshold = 0; // disable truncating

【讨论】:

    【解决方案2】:

    不是真的。这是硬编码到 Chai 中的。
    以下函数是他们的对象格式化程序(来源here),它完全符合您发布的内容:

    } else if (type === '[object Object]') {
      var keys = Object.keys(obj)
        , kstr = keys.length > 2
          ? keys.splice(0, 2).join(', ') + ', ...'
          : keys.join(', ');
      return '{ Object (' + kstr + ') }';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2013-01-16
      • 2019-03-20
      • 1970-01-01
      • 2015-07-06
      • 2012-02-12
      相关资源
      最近更新 更多