chai-as-promised 和 mocha 中嵌套 属性 的测试值

Testing value of nested property in chai-as-promised and mocha

我正在尝试使用 chai-as-promised 库测试 returns promise 的函数。我承诺的结果是一个具有嵌套属性的对象。是否可以测试深度嵌套的 属性 的值。

例如

function myFunc() {
  return new Promise((resolve, reject) => {
    const data = {
      thing: {
        foo: 'bar',
        baz: 'lah'
      }
    }
    resolve(data)
  })
}

如何在不检查整个对象的情况下测试 foo 属性 等于 "bar"?我试过这样的事情:

expect(myFunc()).to.eventually.have.property('thing.foo', 'bar')

但运气不好!

使用深度 属性 查找应该可行。只需在 property.

之前添加 deep 关键字即可
expect(myFunc()).to.eventually.have.deep.property('thing.foo', 'bar')

如果您更喜欢冗长的方式,您应该还可以执行以下操作:

expect(myFunc())
   .to.eventually.have.property('thing')
   .that.has.property('foo')
   .that.is.equal.to('bar');