Existe uma maneira no jasmine.js de verificar se duas matrizes são iguais, por exemplo:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Nem parece funcionar.
javascript
jasmine
user2032804
fonte
fonte
toBeCloseTo(expected,2)
mas não parece funcionar.Você pode comparar uma matriz como a mencionada abaixo, se a matriz tiver alguns valores
Mas se a matriz retornada de alguma função tiver mais de 1 elementos e todos forem zero, verifique usando
fonte
apenas para o registro, você sempre pode comparar usando JSON.stringify
const arr = [1,2,3]; expect(JSON.stringify(arr)).toBe(JSON.stringify([1,2,3])); expect(JSON.stringify(arr)).toEqual(JSON.stringify([1,2,3]));
É tudo medidor de gosto, isso também funcionará para objetos literais complexos
fonte
Eu tive um problema semelhante em que uma das matrizes foi modificada. Eu o estava usando
$httpBackend
e o objeto retornado era na verdade um$promise
objeto contendo a matriz (não um objetoArray
objeto).Você pode criar um combinador de jasmim para corresponder à matriz criando uma
toBeArray
função:E, em seguida, basta usá-lo em seus testes como os outros jogadores de jasmim:
fonte
x=[1,2]
,y=[1,2,3]
pois apenas verifica os primeirosx.length
elementos. Você pode corrigir isso verificandoif (x.length !== y.length) { return false; }
antecipadamente.for (var i; ...)
=>x[undefined]
,var arraysAreSame = function ... var arraysAreSame = true
:(expect([1]).toBeArray([2])
. E também qualquer outra matriz realmente, porqueundefined + 1 => NaN