C'è qualche scherzoso abbinamento per comapare Array <Objects>? [duplicare]
Oct 31 2020
Sto cercando di testare due array di oggetti sono esattamente uguali, ho provato con toEqual matcher ma sembra che funzioni solo per Array of strings, c'è qualche matcher disponibile in Jest per soddisfare la condizione. per favore, non contrassegnarlo come dulplicato, non ho trovato risposte chiare.
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
Risposte
1 bensiu Oct 31 2020 at 10:47
Puoi risolverlo come una serie di aspettative.
expect(arr1).toBeArray();
expect(arr2).toBeArray();
expect(arr1).toBeArrayOfSize(arr2.length);
expect(arr2).toBeArrayOfSize(arr1.length);
successivo ciclo ogni array e controlla se il secondo contiene il suo elemento
arr1.forEach(item => {
expect(arr2).toContain(item);
});
e
arr2.forEach(item => {
expect(arr1).toContain(item);
});
1 muthu Oct 31 2020 at 10:48
Questo funziona per me
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);