使用Mocha和Chai,我通常使用haveProperties
来测试对象是否部分包含另一个对象:
class Foo {
constructor(value) {
Object.defineProperty(this, '_str', {
value
});
}
toString() {
return this._str;
}
}
const bar = new Foo('bar');
const twinBar = new Foo('bar');
const baz = new Foo('baz');
const owner = {
a: 4,
b: bar,
c: 7
};
const partial1 = {
a: 4,
b: twinBar
};
const partial2 = {
a: 4,
b: baz
};
owner.should.haveProperties(partial1); // success
owner.should.haveProperties(partial2); // failure
请注意,haveProperties
可以正常工作"甚至对于没有可枚举属性的对象,虽然bar
和twinBar
被认为是不同的,但bar
和baz
被视为等于。
现在,我需要知道我的部分对象是否包含在haveProperties
提供的深度等式约束中)到对象的数组中
const ownerArr = [{
a: 4,
b: bar,
c: 7
}, {
a: 3
}];
ownerArr.should.(????)(partial1); // should succeed
ownerArr.should.(????)(partial2); // should fail
而且我不知道如何实现这一点。
答案 0 :(得分:1)
您是否尝试过Chai Things
在你的情况下,这应该有效(未经测试)
ownerArr.should.include.something.that.deep.equals(partial)
试试这个:
ownerArr.should.shallowDeepEqual(partial);
您可能需要npm install chai-shallow-deep-equal
才能使上述工作
确保安装了Chai Things插件
另见this。该链接中的第二个答案也应该有效。