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

本文关键字:语句 调用 方法 Expect 为什么 | 更新日期: 2023-09-27 18:33:13

我正在尝试对 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()"时,流会进入方法的代码。我只想检查"是否调用了该方法"而不是"调用方法"。

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

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

这就是执行真正方法的原因。
请参阅详细信息,例如在此问题中。

为了让你的测试工作,你需要使模拟方法变得虚拟。如果你在这里使用接口而不是类,那就更好了。