Jasmine.js比较数组
有没有办法在jasmine.js中检查两个数组是否相等,例如:
arr = [1, 2, 3] expect(arr).toBe([1, 2, 3]) expect(arr).toEqual([1, 2, 3])
两者似乎都不起作用。
只是做了testing,它与toEqual
一起toEqual
请找我的testing:
describe('toEqual', function() { it('passes if arrays are equal', function() { var arr = [1, 2, 3]; expect(arr).toEqual([1, 2, 3]); }); });
仅供参考:
toBe()与toEqual():toEqual()检查等价性。 toBe(),另一方面,确保它们是完全相同的对象。
我有一个类似的问题,其中一个arrays被修改。 我用它$httpBackend
,并从那个返回的对象实际上是一个$promise
对象包含数组(不是一个Array
对象)。
您可以通过创build一个toBeArray
函数来创build一个茉莉花匹配器来匹配数组:
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); } }); });
然后就像在其他茉莉花匹配器中使用它在你的testing中:
it('should compare arrays properly', function() { var array1, array2; /* . . . */ expect(array1[0]).toBe(array2[0]); expect(array1).toBeArray(array2); });