是否可以仅在它们共享的键/属性之间比较两个对象?
Is it possible to compare two objects only between the keys / properties they both share?
所以我有两个对象
address: {
id: 1234,
city: "foo",
country: "bar",
name: "baz"
}
和
defaultAddress: {
id: 1234,
city: "foo",
country: "bar",
firstName: "ba",
lastName: "z"
}
如果我尝试在它们之间进行直接比较/断言,即
expect(address).to.contain(defaultAddress)
(或相反),它会失败,因为每个都包含另一个不包含的字段
(AssertionError: expect {address} to have a property 'firstName')
我只想比较它们共享的键中的值。是否可以通过编程方式执行类似的操作?
您正在尝试匹配共享密钥子集上的对象。这可以按如下方式完成。
for(const key in address) {
if(typeof defaultAddress[key] !== 'undefined') {
expect(address[key]).to.equal(defaultAddress[key])
}
}
也看看这个answer。
为什么不使用 .to.include.any.keys
作为
expect(defaultAddress).to.include.any.keys(...Object.keys(address));
虽然没有测试
所以我有两个对象
address: {
id: 1234,
city: "foo",
country: "bar",
name: "baz"
}
和
defaultAddress: {
id: 1234,
city: "foo",
country: "bar",
firstName: "ba",
lastName: "z"
}
如果我尝试在它们之间进行直接比较/断言,即
expect(address).to.contain(defaultAddress)
(或相反),它会失败,因为每个都包含另一个不包含的字段
(AssertionError: expect {address} to have a property 'firstName')
我只想比较它们共享的键中的值。是否可以通过编程方式执行类似的操作?
您正在尝试匹配共享密钥子集上的对象。这可以按如下方式完成。
for(const key in address) {
if(typeof defaultAddress[key] !== 'undefined') {
expect(address[key]).to.equal(defaultAddress[key])
}
}
也看看这个answer。
为什么不使用 .to.include.any.keys
作为
expect(defaultAddress).to.include.any.keys(...Object.keys(address));
虽然没有测试