Existe algum matcher jest para comapare Array <Objects>? [duplicado]
Oct 31 2020
Estou tentando testar dois conjuntos de objetos são exatamente iguais, tentei com toEqual matcher, mas parece que só funciona para Array de strings, existe algum matcher disponível no Jest para satisfazer a condição. por favor, não marque isto como duplicado, não encontrei respostas claras.
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
Respostas
1 bensiu Oct 31 2020 at 10:47
Você pode resolvê-lo como uma série de expectativas.
expect(arr1).toBeArray();
expect(arr2).toBeArray();
expect(arr1).toBeArrayOfSize(arr2.length);
expect(arr2).toBeArrayOfSize(arr1.length);
próximo loop de cada array e verifique se o segundo contém seu elemento
arr1.forEach(item => {
expect(arr2).toContain(item);
});
e
arr2.forEach(item => {
expect(arr1).toContain(item);
});
1 muthu Oct 31 2020 at 10:48
Isso funciona para mim
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);
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino