使用Moq模拟一个将在第一次调用时引发异常,然后在第二次调用时成功的方法的最简洁方法是什么?

最佳答案

我将使用Callback并增加一个计数器来确定是否从Callback引发异常。

[Test]
public void TestMe()
{
    var count = 0;
    var mock = new Mock<IMyClass>();
    mock.Setup(a => a.MyMethod()).Callback(() =>
        {
            count++;
            if(count == 1)
                throw new ApplicationException();
        });
    Assert.Throws(typeof(ApplicationException), () => mock.Object.MyMethod());
    Assert.DoesNotThrow(() => mock.Object.MyMethod());
}

public interface IMyClass
{
    void MyMethod();
}

关于c# - 最小起订量:设置一个模拟方法在第一次调用时失败,在第二次调用时成功,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7045508/

10-11 17:53