¿Hay alguna manera en jasmine.js para verificar si dos matrices son iguales, por ejemplo:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Ninguno de los dos parece funcionar.
javascript
jasmine
usuario2032804
fuente
fuente
toBeCloseTo(expected,2)
pero no parece funcionar.Puede comparar una matriz como la que se menciona a continuación si la matriz tiene algunos valores
Pero si la matriz que se devuelve de alguna función tiene más de 1 elementos y todos son cero, verifique usando
fuente
solo para el registro que siempre puedes 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]));
Todo es metro de gusto, esto también funcionará para objetos literales complejos
fuente
Tuve un problema similar en el que se modificó una de las matrices. Lo estaba usando para
$httpBackend
, y el objeto devuelto de ese era en realidad un$promise
objeto que contenía la matriz (no unArray
objeto).Puede crear un emparejador de jazmín para que coincida con la matriz creando una
toBeArray
función:Y luego simplemente úsalo en tus pruebas como los otros emparejadores de jazmín:
fuente
x=[1,2]
,y=[1,2,3]
ya que solo verifica los primerosx.length
elementos. Puede solucionar esto comprobando deif (x.length !== y.length) { return false; }
antemano.for (var i; ...)
=>x[undefined]
,var arraysAreSame = function ... var arraysAreSame = true
:(expect([1]).toBeArray([2])
. Y también cualquier otra matriz realmente, porqueundefined + 1 => NaN