Tôi đang sử dụng Mocha để kiểm tra một mô-đun nhỏ trong ứng dụng Express.js của mình. Trong mô-đun này, một trong các hàm của tôi trả về một mảng. Tôi muốn kiểm tra xem mảng có đúng với một đầu vào nhất định hay không. Tôi đang làm như thế này:
suite('getWords', function(){
test("getWords should return list of numbers", function() {
var result = ['555', '867', '5309'];
assert.equal(result, getWords('555-867-5309'));
});
});
Khi điều này chạy, tôi nhận được lỗi xác nhận sau:
AssertionError: ["555","867","5309"] == ["555","867","5309"]
Tuy nhiên, khi tôi thay đổi bài kiểm tra của mình thành một assert.deepEqual
, bài kiểm tra vẫn tốt. Tôi đã tự hỏi liệu đó có phải là trường hợp của ==
vs ===
, nhưng nếu tôi nhập
[1,2,3] === [1,2,3]
vào dòng lệnh node.js, tôi vẫn nhận được sai.
Tại sao các mảng không so sánh theo cách các giá trị khác làm (ví dụ 1 == 1
)? và sự khác biệt giữa khẳng định.equal và khẳng định.deepEqual là gì?
deepEqual()
; không thực sự là điều bạn nghĩ đến khi so sánh cho đến khi bạn thực sự bắt gặp nó.