我该如何强制一个void方法从Stub对象返回Void?

问题描述:

如何在RhinoMocks中执行一个存根对象来为其上的void方法返回void?我该如何强制一个void方法从Stub对象返回Void?

拿这个例子:

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

如果使用void返回类型定义它,_could_它将如何返回任何内容? – CodingGorilla

+0

我的担心是如果我不强制它返回void,对这个存根的调用会抛出一个异常。我试过并看到:乔恩是对的! – pencilCake

方法不能返回值 - 这是一个无效的方法。 CLR不会它尝试返回一个值。你不需要为此测试。

您只需拨打Expect

Return()方法对于void方法调用无效。相反,你想是这样的:

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

它会告诉你是否Horn()被调用。

这就是测试单元测试时调用void方法的方法。你做到以下几点:

  1. 设置的期望(Expect()
  2. 调用方法应该调用预期
  3. 验证预期的方法被调用。
+0

我不认为这将工作,因为您使用的是存根并非模拟,存根将始终通过VerifyAllExpectations 请参阅:http://www.wrightfully.com/on-rhino-mocks-verifyallexpectations-vs-assertwascalled/ – crabCRUSHERclamCOLLECTOR

+0

这应该是一个严格的模拟。我会改变它。感谢您的支持。 –