LastCall和Expect.Call有什么区别?

时间:2013-02-03 20:04:17

标签: c# unit-testing tdd rhino-mocks

有些人可以解释我何时应该使用Rhino Mocks LastCall以及何时应该使用Expect.Call。 我收集了Expect.Call只是一个封装器中的LastCall。另外我假设在处理Rhino Mocks中的返回值时应该使用Expect.Call。

1 个答案:

答案 0 :(得分:2)

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模拟框架的方法,因为模拟方法不返回值。 Expect.Call()要求返回类型。为了让您作为程序员指定Rhino模拟行为(例如IgnoreArguments()),他们提供了一个静态类LastCall

这样你仍然可以在{void}方法上IgnoreArguments。或者指定您希望它重复多次(LastCall.Repeat.Any())。