我该如何强制一个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 ?
方法不能返回值 - 这是一个无效的方法。 CLR不会让它尝试返回一个值。你不需要为此测试。
您只需拨打Expect
。
Return()
方法对于void方法调用无效。相反,你想是这样的:
ICar stubCar= MockRepository.GenerateStrictMock<ICar>();
stubCar.Expect(c=>c.Horn());
stubCar.DoSomethingThatIsSupposedToCallHorn();
stubCar.VerifyAllExpectations();
它会告诉你是否Horn()
被调用。
这就是测试单元测试时调用void方法的方法。你做到以下几点:
- 设置的期望(
Expect()
) - 调用方法应该调用预期
- 验证预期的方法被调用。
我不认为这将工作,因为您使用的是存根并非模拟,存根将始终通过VerifyAllExpectations 请参阅:http://www.wrightfully.com/on-rhino-mocks-verifyallexpectations-vs-assertwascalled/ – crabCRUSHERclamCOLLECTOR
这应该是一个严格的模拟。我会改变它。感谢您的支持。 –
如果使用void返回类型定义它,_could_它将如何返回任何内容? – CodingGorilla
我的担心是如果我不强制它返回void,对这个存根的调用会抛出一个异常。我试过并看到:乔恩是对的! – pencilCake