2

有人可以解释什么时候应该使用 Rhino Mocks LastCall 以及什么时候应该使用 Expect.Call。我收集到 Expect.Call 只是包装器中的 LastCall。我还假设在 Rhino Mocks 中处理返回值时应该使用 Expect.Call。

4

1 回答 1

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

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

于 2013-02-03T20:12:52.823 回答