c# - 如何使用 NSubstitute 模拟对同一方法的一系列调用以返回 AutoFixture 中的不同值?

标签 c# autofixture nsubstitute

我正在寻找一种模拟方法的方法,以便多次调用时结果不同。更具体地说,我想要的是模拟一个方法,以便第三次调用它时,我想针对该结果进行断言。

此语法正确,但模拟了我想要完成的任务:

var foo = Fixture.Freeze<IFoo>();
foo.Exists(Arg.Any<object>()).Returns("firstcall").SecondCall("secondcall").ThirdCall("thirdcall");

你能在 AutoFixture 中做到这一点吗?

编辑:正如 Mark 所指出的,这是一个与 NSubstitute 而不是 AutoFixture 本身相关的问题。我已经更新了标题。

最佳答案

我在提交问题之前就找到了答案,所以我将答案发布在这里:

Fixture.Freeze<IFoo>()
    .Exists(Arg.Any<object>())
    .Returns("default", "firstcall", "secondcall", "thirdcall");

现在,当 Exists() 被调用三次时,响应将是 "firstcall" then "secondcall" then "第三次调用”。此后的任何调用都将收到“default”

关于c# - 如何使用 NSubstitute 模拟对同一方法的一系列调用以返回 AutoFixture 中的不同值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121703/

相关文章:

unit-testing - 可以卡住函数的模拟吗?

c# - MoqVerifyNoOtherCalls() 方法的 NSubstitute 等效项是什么

C# 检测击键并发送到后台窗口

c# - 有没有人为缺少的 MVC 3 html 表单字段助手提供一个很棒的库?

c# - 有没有办法用测试数据创建一个类型的实例?

c# - 我如何测试是否已收到 MVVM 轻量级消息并对其采取行动?

c# - 自动夹具 + NSubstitute : Freezing a mock?

c# - Nsubstitute 检查 setter 是否被调用

c# - 将文本 block 绑定(bind)到两个属性

c# - 赋值表达式列表