2011-10-11 8 views
6

RhinoMocks'ta bir boşluk yöntemini geçersiz kılmak için bir ipucu nesnesini nasıl geçersiz hale getirebilirim? Void'i bir Stub nesnesinden döndürmek için bir void yöntemini nasıl uygulayabilirim?

bu örneği ele alalım:

public interface ICar 
{ 
    string Model {get;set;} 
    void Horn(); 
} 

ICar stubCar= MockRepository.GenerateStub<ICar>(); 
stubCar.Expect(c=>c.Horn()).Return(//now what so that 
            // it returns nothing as the meth. returns void ? 
+0

Boş bir iade türü ile tanımlanmışsa, nasıl bir şey döndürüyor? – CodingGorilla

+0

Benim endişem, boşluğu iade etmek için onu zorlamamış olsaydı, bu saplama çağrısı bir istisna atardı. Denedim ve gördüm: Jon haklıydı! – pencilCake

cevap

8

yöntem bir değer döndüremez - bir boşluk yöntemidir. CLR izin vermeyecek bir değer döndürmeye çalışın. Bunun için test yapmanıza gerek yok.

Sadece Expect aramasına ihtiyacınız var.

6

Geçersiz bir yöntem çağrısı için Return() yöntemi geçersiz. denilen olsun veya olmasın Horn() söyleyecektir

ICar stubCar= MockRepository.GenerateStrictMock<ICar>(); 
stubCar.Expect(c=>c.Horn()); 
stubCar.DoSomethingThatIsSupposedToCallHorn(); 
stubCar.VerifyAllExpectations(); 

: Aksine böyle bir şey istiyorum.

Bu sınama yöntemlerini, birim sınaması sırasında denediğiniz gibi sınarsınız. Aşağıdaki yapın:

  1. beklenen yöntem çağrıldı emin olun beklenti
  2. çağırmak gereken bir beklenti (Expect())
  3. Çağrı yöntemi ayarlayın.
+0

Bunun işe yaramayacağını düşünüyorum çünkü bir Stub a Mock kullanmıyorsunuz ve saplamalar her zaman VerifyAllExpectations 'u görecektir: http://www.wrightfully.com/on-rhino-mocks-verifyallexpectations-vs-assertwascalled/ – crabCRUSHERclamCOLLECTOR

+0

Bu sıkı bir alay olmalı. Onu değiştireceğim. Bunu yakaladığın için teşekkürler. –

İlgili konular