【问题标题】:How to mock a sequence of calls to the same method to return different values in AutoFixture using NSubstitute?如何使用 NSubstitute 模拟对同一方法的一系列调用以在 AutoFixture 中返回不同的值?
【发布时间】:2016-06-30 11:24:05
【问题描述】:

我正在寻找一种模拟方法的方法,以便在多次调用时,结果会有所不同。更具体地说,我所追求的是模拟一个方法,以便第三次调用它时,我想断言该结果。

这个语法正确,但模拟了我想要完成的:

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

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

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

【问题讨论】:

    标签: c# autofixture nsubstitute


    【解决方案1】:

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

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

    现在当Exists() 被调用三次时,响应将是"firstcall" 然后"secondcall" 然后"thirdcall"。此后的任何呼叫都将收到"default"

    【讨论】:

    • AFAICT,这是您正在使用的底层动态模拟库的一个功能(NSubstitute?),与 AutoFixture 关系不大。
    • @MarkSeemann 是的,这是真的,谢谢。将更新答案。
    猜你喜欢
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    相关资源
    最近更新 更多