是否有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