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

har*_*ryg 6 javascript mocha.js promise chai

我正在尝试使用chai-as- promise 库来测试一个返回promise的函数.我的承诺中的结果是具有嵌套属性的对象.是否可以测试深层嵌套属性的值.

例如

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

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

expect(myFunc()).to.eventually.have.property('thing.foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

但没有运气!

Que*_*Roy 11

使用深度属性查找应该可行.只需添加deep关键字property.

expect(myFunc()).to.eventually.have.deep.property('thing.foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

如果你喜欢冗长的方式,你也应该能够做到这样的事情:

expect(myFunc())
   .to.eventually.have.property('thing')
   .that.has.property('foo')
   .that.is.equal.to('bar');
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是错误的——不应该是“.to.eventually.have.nested.property”吗?这可以查看对象中的任何位置(包括根目录下方)是否具有键“thing.foo”和值“bar”,但“.nested.property”检查是否“returnValue.thing.foo ===”bar '`。 (3认同)