tutorial princesa karma disney javascript jasmine

javascript - princesa - jasmine tutorial



Jasmine.js comparando matrices (2)

Acabo de hacer la prueba y funciona con toEqual

por favor encuentra mi prueba:

http://jsfiddle.net/7q9N7/3/

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); });