Итак, у меня есть два объекта
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: ожидаем, что {address} будет иметь свойство 'firstName')
Я только хочу сравнить значения в ключах, которые они оба разделяют. Можно ли сделать что-то подобное программно?
Вы пытаетесь сопоставить объекты в подмножестве общих ключей. Это можно сделать следующим образом.
for(const key in address) {
if(typeof defaultAddress[key] !== 'undefined') {
expect(address[key]).to.equal(defaultAddress[key])
}
}
Также взгляните на этот ответ.
Почему бы не использовать .to.include.any.keys
как
expect(defaultAddress).to.include.any.keys(...Object.keys(address));
Хотя не проверял