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

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

否则,该方法返回null。

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

为SetupSequence拥有更多的“运算符(operator)”是否很好?如果您认为是,则可以投票:
http://moq.uservoice.com/forums/11304-general/suggestions/2973521-setupsequence-more-operators

最佳答案

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

    var firstTime = true;

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

                            firstTime = false;
                            return 0;
                        });

10-08 12:45