javascript - princesa - jasmine tutorial
Jasmine.js comparando matrices (2)
Acabo de hacer la prueba y funciona con toEqual
por favor encuentra mi prueba:
describe(''toEqual'', function() {
it(''passes if arrays are equal'', function() {
var arr = [1, 2, 3];
expect(arr).toEqual([1, 2, 3]);
});
});
Solo para información:
toBe () versus toEqual (): toEqual () verifica la equivalencia. toBe (), por otro lado, se asegura de que sean exactamente el mismo objeto.
¿Hay alguna manera en jasmine.js de 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 parece funcionar.
Tuve un problema similar cuando una de las matrices fue modificada. Lo estaba usando para $httpBackend
, y el objeto devuelto de eso era en realidad un objeto $promise
que contenía la matriz (no un objeto Array
).
Puede crear un matchero de jazmín para que coincida con la matriz creando una función toBeArray
:
beforeEach(function() {
''use strict'';
this.addMatchers({
toBeArray: function(array) {
this.message = function() {
return "Expected " + angular.mock.dump(this.actual) + " to be array " + angular.mock.dump(array) + ".";
};
var arraysAreSame = function(x, y) {
var arraysAreSame = true;
for(var i; i < x.length; i++)
if(x[i] !== y[i])
arraysAreSame = false;
return arraysAreSame;
};
return arraysAreSame(this.actual, array);
}
});
});
Y luego solo úsalo en tus pruebas como los otros jasmin matchers:
it(''should compare arrays properly'', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});