Câu trả lời:
Để mong đợi , .equal
sẽ so sánh các đối tượng chứ không phải dữ liệu của chúng và trong trường hợp của bạn, đó là hai mảng khác nhau.
Sử dụng .eql
để so sánh sâu các giá trị. Kiểm tra liên kết này .
Hoặc bạn có thể sử dụng .deep.equal
để mô phỏng giống như .eql
.
Hoặc trong trường hợp của bạn, bạn có thể muốn kiểm tra .members
.
Đối với khẳng định bạn có thể sử dụng .deepEqual
, liên kết .
to.deep.equal(['a','b'])
dường như không hoạt động. Tuy nhiên to.have.all.members(['a','b'])
không. quá cồng kềnh
Cố gắng sử dụng Equal sâu. Nó sẽ so sánh các mảng lồng nhau cũng như Json lồng nhau.
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
Vui lòng tham khảo trang web tài liệu chính .
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
Đây là cách sử dụng chai để kiểm tra sâu các mảng kết hợp.
Tôi đã có một vấn đề khi cố gắng khẳng định rằng hai mảng kết hợp là bằng nhau. Tôi biết rằng những thứ này không thực sự được sử dụng trong javascript nhưng tôi đã viết các bài kiểm tra đơn vị xung quanh mã kế thừa để trả về một tham chiếu đến một mảng kết hợp. :-)
Tôi đã làm điều đó bằng cách định nghĩa biến là một đối tượng (không phải mảng) trước lệnh gọi hàm của tôi:
var myAssocArray = {}; // not []
var expectedAssocArray = {}; // not []
expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';
// legacy function which returns associate array reference
myFunction(myAssocArray);
assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');
.deepEqual()
( chaijs.com/api/assert ).