Ho un'API e voglio affermare che almeno i dati previsti vengono restituiti. Non mi interessa se vengono restituiti più dati.Come affermare oggetti parzialmente uguali/confronta in javascript?
Perciò voglio mettere a confronto due oggetti (expected
e actual
) dove tutti gli attributi di expected
devono essere uguali a actual
, ma actual
può contenere più attributi:
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
qualche altro esempio:
partiallyEqual({x: 1}, {a:2, x:1}) // return true
partiallyEqual({x: 1}, {a:2, x:2}) // return false (x is different)
Gli array possono (facoltativamente) essere soggetti a un equivalente parziale, se actual
contiene elementi aggiuntivi.
partiallyEqual([1, 3], [1, 2, 3]) // return true
partiallyEqual([3, 1], [1, 2, 3]) // return false (different order)
Hai provato 'deepEqual' Chai? – Gyandeep
sì, ma è un uguale rigoroso, id non ignora alcun attributo –
Dal momento che il tuo caso d'uso è una piccola variante di 'deepEqual', ti suggerisco di guardare qui: https: //github.com/chaijs/deep-eql /blob/master/lib/eql.js Modificalo un po 'per il tuo bisogno. – Gyandeep