我尝试使用 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')
但没有运气!
答案 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');