为什么从Expect()语句调用方法?

时间:2013-09-30 07:00:04

标签: c# rhino-mocks

我试图在Mocked对象上设置一个期望,以确定该方法是否按预期调用。

我使用以下代码来实现它。

//// Create a mocked object(arrange)
A controller = MockRepository.GenerateMock<A>();
someObject.Stub(x => x.Resolve(typeof(A))).Return(controller);

//// Act i.e. call the target function where the controller is created
this._target.InvokePrivateMethod("OnTargetUpdated", false, this, eventArgs);

//// Assert
controller.AssertWasCalled(x => x.UpdateTarget(targetInfo2), o => o.Repeat.Once());

但是,当我尝试断言是否调用了“UpdateTarget()”时,流程会进入方法的代码。我只想检查“如果方法被调用”而不是“调用方法”。

1 个答案:

答案 0 :(得分:1)

由于方法UpdateTarget()是非虚拟的,因此Rhino Mock无法拦截对它的调用。

这就是为什么要执行真正的方法 查看详细信息在this question

要使测试正常工作,您需要将模拟方法设为虚拟。如果你在这里使用界面而不是类,那就更好了。