我有一个API,我想确保至少返回了期望的数据。如果返回更多数据,我不在意。
因此,我想比较两个对象(“expected”和“actual”),其中“expected”的所有属性必须等于“actual”,但“actual”可能包含更多属性:
一些更多的例子:
因此,我想比较两个对象(“expected”和“actual”),其中“expected”的所有属性必须等于“actual”,但“actual”可能包含更多属性:
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
一些更多的例子:
partiallyEqual({x: 1}, {a:2, x:1}) // return true
partiallyEqual({x: 1}, {a:2, x:2}) // return false (x is different)
如果actual
包含额外的元素,数组可能(可选)会受到部分等效的影响。
partiallyEqual([1, 3], [1, 2, 3]) // return true
partiallyEqual([3, 1], [1, 2, 3]) // return false (different order)
deepEqual
吗? - GyandeepdeepEqual
有些不同,我建议您在这里查看:https://github.com/chaijs/deep-eql/blob/master/lib/eql.js 根据您的需求进行一些微调。 - Gyandeepactual
的副本,在比较之前剥离所有不在expected
中的属性。 - Michael_Scharf