2015-10-13 18 views

cevap

4

gibi birden geri arama geçici çözüm elde etmek istiyorsunuz olduğunu .. Öyleyse neden ikinci sapla ne yapmak istiyorsan onu elde etmek için sadece ilk ipi kullanmıyorsun.

durumda, sinon.stub(object, "method", func) aşağıdaki dokümanlara göre yapar:

bir ajan sarılmış bir func ile object.method değiştirir. Her zamanki gibi, object.method.restore(); orijinal yöntemi geri yüklemek için kullanılabilir.

var a = sinon.createStubInstance(MyConstructor); 
a.method = sinon.spy(function() { return "Foo Bar"; }); 

Yoksa bir casus yerine bir saplama oluşturmak istiyorsanız: Bir saplama örneğinin bir saplama işlevini değiştirmek isterseniz

Yani, o zaman neden yapmıyoruz:

var a = sinon.createStubInstance(MyConstructor); 
a.method = sinon.stub(); 
+0

Bir aramadan önce a.method = sinon.stub(), a.method.restore() işlevini çağırmak önemlidir. – Ajitesh

+1

Bu cevap kadar doğru oylama beni doğru yolda buldu. Bu cevap verildiğinden beri “sinon.stub (object,” method ”, fn)” kullanımdan kaldırılmıştır. Şimdi sinon.stub (object, "method") kullanabiliriz. CallsFake (function() {// do stuff}); '[here] (http://sinonjs.org/releases/v2.3.1/stubs #stubcallsfakefakefunction) _Edit: sabit url_ –

+0

@PhilD. Haklısın, ama sorunun kendisi “sinon.stub” (nesne, “yöntem”, fn) ”yi soruyor, bu yüzden bu bilgiyi cevabın kendisinin içine dahil etmeyeceğim. – g00glen00b

7

sinon.createStubInstance(MyConstructor) kullanılarak veya bir bütün nesne stubbing sonra sinon.stub(obj) sadece iki (@ g00glen00b tarafından tarif edildiği gibi) özelliği için yeni bir saplama atama veya tekrar sökme önce saplama geri ile saplama yerini alabilir.

var a = sinon.createStubInstance(MyConstructor); 
a.method.restore(); 
sinon.stub(object, "method", func); 

Bunun avantajı hala beklenen davranış ile sonradan a.method.restore() çağırabilir olmasıdır.

Stub API'sı, gerçeğin ardından saplama tarafından çağrılan işlevi geçersiz kılmak için .call(func) yöntemine sahip olsaydı daha kullanışlı olurdu.

İlgili konular