Mam interfejs API i chcę potwierdzić, że zwrócono co najmniej oczekiwane dane. Nie obchodzi mnie, czy zwrócono więcej danych.Jak zapewnić częściowo głębokie równe/porównać obiekty w javascript?
Dlatego chcę porównać dwa obiekty (expected
i actual
) gdzie wszystkie atrybuty expected
musi być równa actual
, ale actual
może zawierać więcej atrybutów:
var expected = {
foo: 1,
bar: {
x1: 42,
a1: [
1,
2,
{
x: 7
}
]
}
}
var actual = {
foo: 1,
whatever: 55, // to be ignored
additional: { // to be ignored
ignore: 1
},
bar: {
x1: 42,
a1: [
1,
2,
{
x: 7,
y: 8 // to be ignored
}
]
}
}
partiallyEqual(expected, actual) // returns true
Jeszcze kilka przykładów:
partiallyEqual({x: 1}, {a:2, x:1}) // return true
partiallyEqual({x: 1}, {a:2, x:2}) // return false (x is different)
Tablice mogą (opcjonalnie) być częściowo równoważne, jeśli actual
zawiera dodatkowe elementy.
partiallyEqual([1, 3], [1, 2, 3]) // return true
partiallyEqual([3, 1], [1, 2, 3]) // return false (different order)
Czy próbowałeś Chai za 'deepEqual'? – Gyandeep
tak, ale jest ściśle równy, id nie ignoruje żadnych atrybutów –
Ponieważ twój przypadek użycia jest małą odmianą 'deepEqual', proponuję przejrzeć tutaj: https: //github.com/chaijs/deep-eql /blob/master/lib/eql.js Dostosuj go do swoich potrzeb. – Gyandeep