Есть ли способ в jasmine.js, чтобы проверить, если два массива равны, например:Jasmine.js сравнивающие массивы
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Ни кажется, работает.
Есть ли способ в jasmine.js, чтобы проверить, если два массива равны, например:Jasmine.js сравнивающие массивы
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Ни кажется, работает.
Просто сделал тест, и он работает с toEqual
пожалуйста найти мой тест:
describe('toEqual', function() {
it('passes if arrays are equal', function() {
var arr = [1, 2, 3];
expect(arr).toEqual([1, 2, 3]);
});
});
Просто для информации:
toBe() versus toEqual(): toEqual() checks equivalence. toBe(), on the other hand, makes sure that they're the exact same object.
Я имел simil ar, где один из массивов был изменен. Я использовал его для $httpBackend
, а возвращаемый объект был фактически объектом $promise
, содержащим массив (а не объект Array
).
Вы можете создать жасмин Искатель, чтобы соответствовать массиву, создавая 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);
}
});
});
А затем просто использовать его в своих тестах, как и других matchers жасмина:
it('should compare arrays properly', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});
Я получаю TypeError: this.addMatchers не является функцией – AndyTheEntity
Предоставленная вами функция «arraysAreSame» даст ложное положительное значение для массивов 'x = [1,2]', 'y = [1,2,3 ] ', поскольку он проверяет только первые элементы' x.length'. Вы можете исправить это, установив 'if (x.length! == y.length) {return false; } 'заранее. – warchinal
@AndyTheEntity «Функция addMatchers больше не находится в spec (это), теперь она находится на глобальном объекте жасмина». - см. [Jasmine docs] (http://jasmine.github.io/2.0/upgrading.html) – rwisch45
Hm, спасибо , кажется, что проблема в том, что массив, с которым я сравниваюсь, модифицирован, поэтому он делает что-то вроде arr = [1, 2, 3] arr ['pop'] = function() {...} ожидать (arr). toEquals ([1, 2, 3]) – user2032804
как проверить, равны ли значения в epsilon? например, мой тест не завершен. Ожидаемые [-9, -6, 6, 3, 1.0000000000000004, 2] равны [-9, -6, 6, 3, 1, 2]. – morpheus
@morpheus - Я пробовал 'toBeCloseTo (ожидается, 2)', но он, похоже, не работает. – cod3monk3y