首页 > 解决方案 > 运行单元测试时抛出异常

问题描述

我通过创建一个简单的控制台应用程序来实现Moq的快速入门功能作为学习练习。当我运行应用程序时,我看到了异常。

class Foo : IFoo
{
    public bool DoSomething(string value)
    {
        return false;
    }
}

public class Program
{
    private static Mock<IFoo> mock = new Mock<IFoo>();

    static void Main(string[] args)
    {
      mock.Setup(foo => foo.DoSomething("reset")).Throws<InvalidOperationException>();
      Assert.That(() => mock.Object.DoSomething("reset"), 
          Throws.InvalidOperationException);
    }
}

标签: c#nunitmoq

解决方案


这看起来不是Moq问题,更多的是I can't catch the exception throw in DoSomethingproblem。我将假设您使用该nunit框架。

尝试使用内置方法 Assert.Throws进行异常断言

Assert.Throws<InvalidOperationException>(
      () => { mock.Object.DoSomething("reset"); });

推荐阅读