Có cách nào trong jasmine.js để kiểm tra xem hai mảng đều bình đẳng, ví dụ:Jasmine.js so sánh mảng
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Không có vẻ để làm việc.
Có cách nào trong jasmine.js để kiểm tra xem hai mảng đều bình đẳng, ví dụ:Jasmine.js so sánh mảng
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
Không có vẻ để làm việc.
Chỉ cần làm các xét nghiệm và nó hoạt động với toEqual
hãy tìm thử nghiệm của tôi:
describe('toEqual', function() {
it('passes if arrays are equal', function() {
var arr = [1, 2, 3];
expect(arr).toEqual([1, 2, 3]);
});
});
Chỉ cần cung cấp thông tin:
toBe() versus toEqual(): toEqual() checks equivalence. toBe(), on the other hand, makes sure that they're the exact same object.
Tôi đã có một simil ar vấn đề mà một trong những mảng đã được sửa đổi. Tôi đã sử dụng nó cho $httpBackend
và đối tượng trả về từ đó thực ra là đối tượng $promise
chứa mảng (không phải là đối tượng Array
).
Bạn có thể tạo một khớp hoa nhài để phù hợp với mảng bằng cách tạo ra một hàm 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);
}
});
});
Và sau đó chỉ cần sử dụng nó trong các thử nghiệm của bạn như quẹt nhài khác:
it('should compare arrays properly', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});
Tôi nhận được TypeError: this.addMatchers không phải là hàm – AndyTheEntity
Hàm "arraysAreSame" mà bạn đã cung cấp sẽ cho kết quả dương tính giả cho các mảng 'x = [1,2]', 'y = [1,2,3 ] 'vì nó chỉ kiểm tra các phần tử' x.length' đầu tiên. Bạn có thể sửa lỗi này bằng cách kiểm tra 'if (x.length! == y.length) {return false; } 'trước. – warchinal
@AndyTheEntity "Chức năng addMatchers không còn trên spec (this) nó bây giờ là trên đối tượng hoa nhài toàn cầu." - xem [Tài liệu Jasmine] (http://jasmine.github.io/2.0/upgrading.html) – rwisch45
Hm, nhờ , có vẻ như là vấn đề là mảng tôi đang so sánh với được sửa đổi, do đó, nó làm một cái gì đó như arr = [1, 2, 3] arr ['pop'] = function() {...} mong đợi (arr) .toEquals ([1, 2, 3]) – user2032804
làm thế nào để kiểm tra nếu các giá trị bằng nhau trong epsilon? ví dụ: kiểm tra của tôi không thành công Dự kiến [-9, -6, 6, 3, 1.0000000000000004, 2] bằng [-9, -6, 6, 3, 1, 2]. – morpheus
@morpheus - Tôi đã thử 'toBeCloseTo (dự kiến, 2)' nhưng nó dường như không hoạt động. – cod3monk3y