C'è un modo in jasmine.js per verificare se due matrici sono uguali, per esempio:Jasmine.js confronto array
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Né sembra funzionare.
C'è un modo in jasmine.js per verificare se due matrici sono uguali, per esempio:Jasmine.js confronto array
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Né sembra funzionare.
appena fatto il test e funziona con toEqual
si prega di trovare il mio test:
describe('toEqual', function() {
it('passes if arrays are equal', function() {
var arr = [1, 2, 3];
expect(arr).toEqual([1, 2, 3]);
});
});
Solo per informazioni:
toBe() versus toEqual(): toEqual() checks equivalence. toBe(), on the other hand, makes sure that they're the exact same object.
Ho avuto un simil un problema in cui uno degli array è stato modificato. Lo stavo usando per $httpBackend
e l'oggetto restituito da quello era in realtà un oggetto $promise
contenente l'array (non un oggetto Array
).
È possibile creare un matcher gelsomino per abbinare la matrice con la creazione di una funzione 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);
}
});
});
E poi basta usarlo nei test come gli altri matchers gelsomino:
it('should compare arrays properly', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});
Ricevo TypeError: this.addMatchers non è una funzione – AndyTheEntity
La funzione "arraysAreSame" che hai fornito darà un falso positivo per gli array 'x = [1,2]', 'y = [1,2,3 ] 'poiché controlla solo i primi elementi' x.length'. Puoi risolvere questo problema controllando 'if (x.length! == y.length) {return false; } 'in anticipo. – warchinal
@AndyTheEntity "La funzione addMatchers non è più sulla specifica (questo) è ora sull'oggetto globale jasmine." - vedi [Jasmine docs] (http://jasmine.github.io/2.0/upgrading.html) – rwisch45
Hm, grazie , sembra che il problema è che l'array a cui sto confrontando è modificato, quindi fa qualcosa come arr = [1, 2, 3] arr ['pop'] = function() {...} expect (arr) .toEquals ([1, 2, 3]) – user2032804
come verificare se i valori sono uguali all'interno di epsilon? ad es., il mio test fallisce Previsto [-9, -6, 6, 3, 1.0000000000000004, 2] per uguagliare [-9, -6, 6, 3, 1, 2]. – morpheus
@morpheus - Ho provato 'toBeCloseTo (previsto, 2)' ma non sembra funzionare. – cod3monk3y