1

我正在尝试对 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()”时,流程会进入方法的代码。我只是想检查“如果方法被调用”而不是“调用方法”。

4

1 回答 1

1

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

这就是为什么要执行真正的方法。
请参阅此问题中的详细信息。

要使您的测试正常工作,您需要将模拟方法设为虚拟。如果你在这里使用接口而不是类,甚至更好。

于 2013-10-10T18:58:10.800 回答