Javascript comapare阵列是否有任何笑话匹配器<;对象>;?
我试图测试两个对象数组是否完全相等,使用toEqual matcher进行了尝试,但似乎它只适用于字符串数组,是否有任何matcher可用于满足该条件。请不要将此标记为重复,我没有找到明确的答案Javascript comapare阵列是否有任何笑话匹配器<;对象>;?,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我试图测试两个对象数组是否完全相等,使用toEqual matcher进行了尝试,但似乎它只适用于字符串数组,是否有任何matcher可用于满足该条件。请不要将此标记为重复,我没有找到明确的答案 const arr1 = [{name: 'sam', degree: 'engineer', age: '23'}, {name: 'jane', degree: 'accounts', age: '25'}] const arr2 = [{name: 'jane', degree: 'account
const arr1 = [{name: 'sam', degree: 'engineer', age: '23'}, {name: 'jane', degree: 'accounts', age: '25'}]
const arr2 = [{name: 'jane', degree: 'accounts', age: '25'},{name: 'sam', degree: 'engineer', age: '23'}]
expect(arr1).toEqual(arr2) // should pass the testcase
你可以通过一系列的期望来解决它
expect(arr1).toBeArray();
expect(arr2).toBeArray();
expect(arr1).toBeArrayOfSize(arr2.length);
expect(arr2).toBeArrayOfSize(arr1.length);
接下来循环每个数组并检查第二个数组是否包含其元素
arr1.forEach(item => {
expect(arr2).toContain(item);
});
及
这对我有用
const sortResponseData = arr1.sort((a: any, b: any) => {
return a.name > b.name
? 1
: b.name > a.name
? -1
: 0;
});
const sortEntityMetaData = arr2.sort((a: any, b: any) => {
return a.name > b.name
? 1
: b.name > a.name
? -1
: 0;
});
expect(sortResponseData).toEqual(sortEntityMetaData);
toEqual
也适用于对象数组,但不适用于元素顺序错误的数组。
const sortResponseData = arr1.sort((a: any, b: any) => {
return a.name > b.name
? 1
: b.name > a.name
? -1
: 0;
});
const sortEntityMetaData = arr2.sort((a: any, b: any) => {
return a.name > b.name
? 1
: b.name > a.name
? -1
: 0;
});
expect(sortResponseData).toEqual(sortEntityMetaData);