是否有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其中一個陣列被修改的問題。我使用它爲$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);
}
});
});
,然後只用它在你的測試,如其他茉莉的匹配:
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(this)上,它現在在全局茉莉花對象上。」 - 參見[Jasmine docs](http://jasmine.github.io/2.0/upgrading.html) – rwisch45
嗯,謝謝,似乎問題在於我正在比較的數組被修改了,所以它做了類似arr = [1,2,3] arr ['pop'] = function(){...} expect(arr ).toEquals([1,2,3]) – user2032804
如何測試ε值是否等於ε?例如,我的測試失敗期望[-9,-6,6,3,1.0000000000000004,2]等於[-9,-6,6,3,1,2]。 – morpheus
@morpheus - 我試過'toBeCloseTo(預計,2)',但它似乎沒有工作。 – cod3monk3y