【问题标题】:chai js expect property value empty arraychai js期望属性值空数组
【发布时间】:2016-03-14 20:17:07
【问题描述】:

我正在尝试使用 chai js 断言编写单元测试,并且想知道如何将零长度的数组作为值。

我的测试函数期望语句:

return expect(functionRetuningPromise()).to eventually.have.property("key1", []);

运行 mocha 时的控制台输出:

AssertionError: expected { otherkey: otherVal, key1: [] } to have a property 'key1' of [], but got []

我尝试了deep.propertykey1:"[]" 没有成功

【问题讨论】:

  • 总是有“空”断言chaijs.com/api/bdd/#empty
  • @JasonSperske:但是如果我必须检查属性的值,它会起作用吗?而不仅仅是一个简单的变量?

标签: javascript mocha.js chai


【解决方案1】:

我忽略了属性断言中的一部分变化。所以,它对我有用的是:

return expect(functionRetuningPromise()).to.eventually.have.property("key1").that.eql([]);

【讨论】:

  • 你确定这有效吗? [] == [] 为假(引用相等)!
  • 是的,这是可行的,因为使用了 eql 而不是 equal。 Eql 使用 deep-eql-project (medium.com/building-ibotta/…)
【解决方案2】:

怎么样

return 

expect(functionRetuningPromise()).to.eventually.have.property("key1").that.satisfy(function (value) {
  expect(value).to.be.instanceof(Array);
  expect(value).to.have.length.above(0);
  return true;
})

【讨论】:

    【解决方案3】:

    这应该可以解决问题

    expect(value).to.deep.equal([]);
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案4】:

    我觉得这个比较简单

    expect( value ).to.be.an( "array" ).that.is.empty
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2017-10-02
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多