LastCall和Expect.Call有什么区别

本文关键字:什么 区别 Call Expect LastCall | 更新日期: 2023-09-27 17:57:11

有人可以解释一下我什么时候应该使用Rhino Mocks LastCall,什么时候应该使用Expect.Call。我发现Expect.Call只是一个包装中的LastCall。 此外,我假设在处理 Rhino Mocks 中的返回值时应该使用 Expect.Call。

LastCall和Expect.Call有什么区别

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");

或者,您可以通过模拟框架执行此操作:

Expect.Call(myMock.Do("stuff")).Return("something");

在第一种情况下,你不能调用 Rhino 模拟框架的方法,因为模拟方法不返回值。Expect.Call()需要返回类型。为了允许您作为程序员指定 Rhino 模拟行为(例如 IgnoreArguments())它们提供了一个静态类LastCall

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