c# - LastCall 和 Expect.Call 有什么区别?

标签 c# unit-testing tdd rhino-mocks

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

最佳答案

using (mocks.Record())
{
    myMock.AVeryMeaningFullMethodThatDoesNotReturnAValue("a to be ignored parameter");
    LastCall.IgnoreArguments();

    Expect.Call(myMock.AnotherMethodThatDoesReturnAValue()).IgnoreArguments().Returns("barney");
}

首先进行一些介绍。在记录模式下,您可以指定“模拟”环境的行为。您可以执行此操作,但只需指定您期望的方法:

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())。

关于c# - LastCall 和 Expect.Call 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676708/

相关文章:

c# - 解析 boolean C# 文化 verdadero

单元测试 PostgreSQL 行级锁

python - 每个输入文件单独的测试用例?

c# - 为什么向列表<>添加新值会覆盖列表<>中的先前值

c# - 为每个带有 Rx 的事件生成带有延迟的第二个后续事件

c# - Entity Framework 过滤器嵌套集合

android - 单元测试定位服务

database - 您使用哪些最佳实践来测试数据库查询?

android - 如何使用 firebase-server 在 android 下模拟 firebase 云消息传递

ios - 将 OCMock 与未知数量的方法调用一起使用