【发布时间】:2013-02-03 20:04:16
【问题描述】:
能否解释一下什么时候应该使用 Rhino Mocks LastCall 以及什么时候应该使用 Expect.Call。 我收集到 Expect.Call 只是包装器中的 LastCall。我还假设在 Rhino Mocks 中处理返回值时应该使用 Expect.Call。
【问题讨论】:
标签: c# unit-testing tdd rhino-mocks
能否解释一下什么时候应该使用 Rhino Mocks LastCall 以及什么时候应该使用 Expect.Call。 我收集到 Expect.Call 只是包装器中的 LastCall。我还假设在 Rhino Mocks 中处理返回值时应该使用 Expect.Call。
【问题讨论】:
标签: c# unit-testing tdd rhino-mocks
using (mocks.Record())
{
myMock.AVeryMeaningFullMethodThatDoesNotReturnAValue("a to be ignored parameter");
LastCall.IgnoreArguments();
Expect.Call(myMock.AnotherMethodThatDoesReturnAValue()).IgnoreArguments().Returns("barney");
}
首先介绍一下。在Record 模式下,您可以指定“模拟”环境的行为。您可以这样做,但只需指定您期望的方法:
myMock.AVeryMeaningFullMethodThatDoesNotReturnAValue("a to be ignored parameter");
或者,您可以通过 Mocking 框架执行此操作:
Expect.Call(myMock.Do("stuff")).Return("something");
第一种情况,你不能调用Rhino mocking 框架的方法,因为mocked 方法没有返回值。 Expect.Call() 要求返回类型。为了让您作为程序员指定 Rhino 模拟行为(例如 IgnoreArguments()),他们提供了一个静态类 LastCall。
这样你仍然可以在 void 方法上使用IgnoreArguments。或者指定您希望它重复多次 (LastCall.Repeat.Any())。
【讨论】: