我试图在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()”时,流程会进入方法的代码。我只想检查“如果方法被调用”而不是“调用方法”。
答案 0 :(得分:1)
由于方法UpdateTarget()
是非虚拟的,因此Rhino Mock无法拦截对它的调用。
这就是为什么要执行真正的方法 查看详细信息在this question。
要使测试正常工作,您需要将模拟方法设为虚拟。如果你在这里使用界面而不是类,那就更好了。