Tại sao những điều sau đây thất bại?chai kiểm tra bình đẳng mảng không hoạt động như mong đợi
expect([0,0]).to.equal([0,0]);
và cách nào đúng để kiểm tra điều đó?
Tại sao những điều sau đây thất bại?chai kiểm tra bình đẳng mảng không hoạt động như mong đợi
expect([0,0]).to.equal([0,0]);
và cách nào đúng để kiểm tra điều đó?
Đối với mong đợi, .equal
sẽ so sánh các đối tượng thay vì 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ị. Hãy xem link 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 check.members
.
Đối với khẳng định bạn có thể sử dụng .deepEqual
, link.
FTR, cú pháp bằng nhau sâu đã thay đổi thành: '.deepEqual()' (http://chaijs.com/api/assert). – Ludder
Nó không thay đổi, bạn đang xem xét ** ** Chức năng ** Asserts **, nhưng không ** Mong đợi/Nên ** đề tài chủ đề nào được quan tâm. – moka
Bạn nói đúng, tôi đã không đọc tốt. Tôi nghĩ đó chỉ là một thay đổi API khác. – Ludder
Cố gắng sử dụng mức độ tương đương 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 main documentation site.
Điều này cũng hoạt động đối với mảng: 'mong đợi ([1, 5, 10] .sort()). to.deep.equal ([1, 10, 5])' – alxndr
Đây là cách sử dụng chai để kiểm tra sâu mảng kết hợp.
Tôi gặp sự cố khi cố gắng xác nhận rằng hai mảng liên kết là bằng nhau. Tôi biết rằng những điều 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 nó bằng cách định nghĩa các biến như một đối tượng (không mảng) trước khi 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');
Xin lỗi, nhưng đây là một ví dụ tiêu biểu là lý do tôi ghét những "ngôn ngữ thông thạo "API. Nó không phải tiếng Anh: nó là một phiên bản tiếng Anh bán chạy. Vậy tại sao lại giả vờ là tiếng Anh? Đối với người không lập trình? Sau đó, tôi mong đợi nó được rõ ràng hơn và rõ ràng, không ít hơn. "Thật dễ dàng, bạn sử dụng 'bình đẳng' để kiểm tra bình đẳng ... oh, không cho mảng vì nó làm đối tượng so sánh ... tốt, mảng giống như một loại đối tượng chuyên biệt ... bạn biết đấy, chỉ cần sử dụng eql cho mảng và đừng lo lắng vì sao. " Tuyệt quá! – fool4jesus