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

时间:2016-06-06 09:38:36

标签: javascript promise mocha chai

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

E.g。

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')

但没有运气!

1 个答案:

答案 0 :(得分:10)

使用深层属性查找应该有效。只需在deep之前添加property关键字。

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');