2009-08-28 19 views
8

olarak adlandırılırsa bir özellik ayarlayın Bir yöntem çağrılırsa Rhino Mocks'ın Stub'un bir özelliğini ayarlamasının bir yolu var mı. BöyleRhino Mocks - Bir yöntem

şey: (kalın Sahte Kod)

callMonitor.Expect (x => x.HangUp()). SetProperty (callMonitor.InACall = false);

HangUp yöntemi geçersiz sayılır ve bunu gerçekten değiştiremiyorum. Ama saplantımın, HangUp çağrıldığında aramanın asıldığını bilmesini istiyorum.

cevap

10

Bir saplama çağrıldığında kendi kodunuzu çalıştırmak için "WhenCalled" yöntemini kullanabilirsiniz; Oldukça emin olmalısınız Mocks ile de. Belgelere göre, WhenCalled Callback için bir değiştirme/yükseltme.

callMonitor.Expect(x => x.HangUp()) 
.WhenCalled(invocation => callMonitor.InCall = false); 

bu yazının sonunda bazı bilgi: http://grahamnash.blogspot.com/2008/10/rhino-mocks-35.html

+0

Hala bir kötüye kullanım, yöntem adı değişmiş olsa bile. Ne zaman Called gibi Geri Çağırma, gelişmiş beklenti değerlendirme yapmak için ileri beklenti değerlendirmesinde kullanılmak üzere tasarlanmıştır. – tvanfosson

+0

Bunun yerine ne önerirsiniz? Bir el testi ikiye katlandı? –

+0

Aslında, testi görmek istiyorum. Test yeterince odaklanmışsa bana öyle geliyor ki, buna ihtiyaç olmayabilir. – tvanfosson

1

Bunu yapmak için gereksinim duymanız gereken bazı koşullar olabilir, ancak genellikle kodunuza yanıt olarak uygun değerleri döndürmesi için yalnızca sahte/saplamanızı yapacağınızı beklerdim. Düşünebildiğim tek istisnalar, bir sınıfın bir parçasını test ettiğiniz ve diğer bölümlerle dalga geçmek istediğiniz kısmi alaylardır.

Sahibine alay ayarlanması oldukça kolaydır. callMonitor Eğer

callMonitor.Expect(x => x.HangUp()); 
callMonitor.Expect(x => x.InACall).Return(false); 

o zaman doğrudan özelliği ayarlayabilirsiniz, bir taslaktır. Hiç RhinoMocks uzmanı değilim, ama bu çalışması gerekir inanıyoruz

callMonitor.Expect(x => x.HangUp()).Callback(() => callMonitor.InCall = false); 
1

Evet, Geri arama yöntemi kullanabilirsiniz.

SetupResult.For(callMonitor.InACall).Return(false); 
+0

yazdım olurdu Tam olarak ne (ben 6 dakika önce bu soruya rastlamak vardı;) geri arama mekanizmasının –

+0

Korkunç kötüye. Mesajda çok fazla bilgi olmadığı için söylemek zor, ama OP'nin testlere yeterince odaklanmadığını düşünüyorum. Ayende'nın http://ayende.com/Wiki/(S(zwkmge45vdgkgvznp13mgc55))/Rhino+Mocks+Callbacks.ashx – tvanfosson

+2

FWIW adresindeki geri çağrıları kullanma konusundaki uyarılarını okuyunuz - geri bildirimin beklentinin olup olmadığını değerlendirmek için kullanılması gerekiyor karşılandı, keyfi hesaplamalar yapmamak. – tvanfosson

-1

:

callMonitor.Stub(x => x.HangUp()); 
callMonitor.InACall = false; 
+0

Bence bu onun sorduğu şey değildi. HangUp yöntemi, HangUp yöntemi çağrıldığında InCall özelliğini yanlış olarak ayarlayan bir impromptu uygulaması vermenin bir yolu olup olmadığını sordu. Sahip olduğunuz şey, HangUp yönteminin çağrılıp yapılmadığına bakılmaksızın InACall yönteminin false döndürmesine neden olur. –

İlgili konular