最小起订量中的SetupSequence

问题描述:

我希望模拟第一次返回0,然后在每次调用该方法时都返回1.问题是,如果该方法被调用了4次,我应该这样写:

I want a mock returns a 0 the first time, then returns 1 anytime the method was called. The problem is that if the method is called 4 times, I should write that :

mock.SetupSequence(x => x.GetNumber())
    .Returns(0)
    .Returns(1)
    .Returns(1)
    .Returns(1);

否则该方法返回null.

otherwise the method returns null.

有什么办法可以写出在第一次调用该方法之后的下一次调用,该方法返回1? 谢谢

Is there any way to write that the next times the method was called after the first time, the method returns 1 ? Thank you

让SetupSequence拥有更多操作员"是件好事吗?如果您认为是,则可以投票: http://moq.uservoice.com/forums/11304 -general/suggestions/2973521-setupsequence-more-operators

Is it good to have more "operators" for SetupSequence ? If you think YES you can vote : http://moq.uservoice.com/forums/11304-general/suggestions/2973521-setupsequence-more-operators

这并不是特别花哨,但我认为它会起作用:

That's not particulary fancy, but I think it would work:

    var firstTime = true;

    mock.Setup(x => x.GetNumber())
        .Returns(()=>
                        {
                            if(!firstTime)
                                return 1;

                            firstTime = false;
                            return 0;
                        });