Jasmine.js比较数组

有没有办法在jasmine.js中检查两个数组是否相等,例如:

arr = [1, 2, 3] expect(arr).toBe([1, 2, 3]) expect(arr).toEqual([1, 2, 3]) 

两者似乎都不起作用。

只是做了testing,它与toEqual一起toEqual

请找我的testing:

http://jsfiddle.net/7q9N7/3/

 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); });