2015-06-15 15 views
7

İşlev üzerinde casusluk yapıyorum, bir argüman olarak nesne alır. Bu işlevin, nesnenin belirli özellikleriyle çağrıldığını iddia etmem gerekiyor.Nesne iddiasıyla çağrıldı

örn:

function kaboom() { 

    fn({ 
     foo: 'foo', 
     bar: 'bar', 
     zap: function() { ... }, 
     dap: true 
    }); 
} 

ve benim test ben bunu yapabilirsiniz: my SUT sahiptir

fnStub = sinon.stub(); 
kaboom(); 
expect(fnStub).to.have.been.called; 

ve o (o fn 'ın çağrılmış olduğunu bilmekte fayda) çalışır. Şimdi doğru nesnenin işleve geçtiğinden emin olmalıyım. Sadece foo ve bar özelliklerini önemsiyorum, yani argümanın belirli özellikleri için eşleşme ayarlamalıyım. Nasıl?

upd: sinon.match() basit nesneler için çalışıyor gibi görünüyor. Barı yükseltelim mi?

zap işlevini onaylama içine eklemek istiyorsam ne olur? Bu işi nasıl yaparım?

cevap

12

Eğer sinon-chai kullandığınız varsayarsak, bu

expect(fnStub).to.have.been.calledWith(sinon.match({ 
    foo: 'foo', 
    bar: 'bar' 
})); 
+0

ama nedense benim için işe yaramadı ulaşmak için sinon.match birlikte calledWith kullanabilirsiniz, o dinlenme özellikleri eşleşmiyor söyleyebilirim . Tekrar deneyeyim, belki bir şeyler yanlış yapıyorum – Agzam

+0

aldığınız tam hata mesajı nedir? Fonksiyonun hiç çağrılmadığını mı söylüyor, yoksa yanlış argümanlarla çağrıldığını mı söylüyor? –

+0

Aslında neyin işe yaramadığını buldum. sinon.match işlevi olan bir nesneye sahip. Bu çalışmıyor. sinon.match ({foo: sinon.stub()}) gibi bir şey bu işi yapmanın bir yolunu bulamıyor – Agzam

İlgili konular