Chức năng tôi đang theo dõi, nhận đối tượng làm đối số. Tôi cần khẳng định rằng hàm được gọi với các thuộc tính nhất định của đối tượng.Đã được gọi với xác nhận đối tượng
ví dụ: SUT của tôi có:
function kaboom() {
fn({
foo: 'foo',
bar: 'bar',
zap: function() { ... },
dap: true
});
}
và trong thử nghiệm của tôi, tôi có thể làm điều này:
fnStub = sinon.stub();
kaboom();
expect(fnStub).to.have.been.called;
và làm việc (rất tốt để biết rằng fn
's được gọi là). Bây giờ tôi cần đảm bảo rằng đối tượng thích hợp đã được chuyển vào hàm. Tôi chỉ quan tâm đến các thuộc tính foo
và bar
, nghĩa là tôi phải đặt đối sánh cho các thuộc tính cụ thể của đối số. Làm sao?
cập nhật: sinon.match() dường như hoạt động đối với các đối tượng đơn giản. Hãy nâng thanh lên, phải không?
Điều gì sẽ xảy ra nếu tôi muốn đưa hàm zap
vào xác nhận? Làm cách nào để tôi thực hiện công việc đó?
nhưng điều đó vì một lý do không làm việc cho tôi, nó sẽ nói rằng các tài sản còn lại không phù hợp . hãy để tôi thử lại, có thể tôi đang làm điều gì sai ở đây – Agzam
thông báo lỗi chính xác mà bạn đang nhận được là gì? Có phải nó nói rằng chức năng của nó không được gọi là gì cả, hay nó nói nó được gọi với các đối số sai? –
Oh thực sự tôi đã tìm thấy những gì không hoạt động. sinon.match với một đối tượng có thuộc tính của hàm. Điều đó không hiệu quả. một cái gì đó giống như 'sinon.match ({foo: sinon.stub()})' không thể tìm ra cách để thực hiện công việc đó – Agzam