如何强制void方法从Stub对象返回Void?

时间:2011-10-11 14:20:46

标签: c# unit-testing mocking rhino-mocks

如何在RhinoMocks中强制执行存根对象,为其上的void方法返回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 ? 

2 个答案:

答案 0 :(得分:8)

方法不能返回一个值 - 它是一个void方法。 CLR不会尝试返回一个值。你不需要为此进行测试。

您只需要Expect来电。

答案 1 :(得分:6)

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

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

将告诉您是否调用了Horn()

这就是测试单元测试时调用void方法的方法。您执行以下操作:

  1. 设置期望(Expect()
  2. 调用应调用期望的方法
  3. 验证是否调用了预期的方法。