Jasmine có các đối sánh được tích hợp toBe
và toEqual
. Nếu tôi có một đối tượng như thế này:Kiểm tra đối tượng bình đẳng trong Jasmine
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
và cố gắng so sánh new Money(200, "USD")
và kết quả của Tóm lại, những quẹt built-in sẽ không hoạt động như mong đợi. Tôi đã quản lý để triển khai một work-around dựa trên một tùy chỉnh equals
method và matcher tùy chỉnh, nhưng nó dường như chỉ làm việc nhiều.
Cách tiêu chuẩn để so sánh các đối tượng trong Jasmine là gì?
Những gì bạn nói về '==' và '===' là hoàn toàn sai. Hai trường hợp khác nhau của một đối tượng có cùng nội dung sẽ trả về false. Đối với các phần tử không nguyên thủy, '==' và '===' hoạt động giống hệt nhau. http://jsfiddle.net/9mrmyrs6/ –
@JuanMendes xem câu trả lời của Andreas K. ... các bạn đang nói hai điều khác nhau. Đây có phải là một sự khác biệt trong việc tạo mới một đối tượng vs một đối tượng theo nghĩa đen? – pherris
@pherris mmm .... vâng, chúng tôi đang nói những điều khác nhau: Tôi nói rằng khi so sánh các nguyên thủy, không quan trọng bạn có sử dụng '==' hay '===', không có sự ép buộc nào liên quan . Andreas đang nói rằng bạn có thể tạo một trình phù hợp tùy chỉnh. Câu lệnh cuối cùng về cách khắc phục sự cố này là "đúng" nhưng lời giải thích trong đoạn đầu tiên không chính xác. 'jasmine' sẽ thực sự kiểm tra nội dung đối tượng nếu bạn sử dụng' toBe() 'thay vì' equals' –