Moq - 测试控制器方法是否抛出异常

时间:2011-11-15 07:41:32

标签: unit-testing moq

我有一个控制器方法,如果通过id列表的循环找不到指定的id,则抛出自定义异常,否则返回部分视图。

我已经完成了测试,看它是否成功返回了部分视图,但是如何测试该方法是否失败以及是否抛出了自定义异常?

1 个答案:

答案 0 :(得分:10)

如果捕获预期的异常,您可以执行简单的try / catch并执行Assert.Fail。但是,大多数单元测试框架提供了一种自动测试异常的方法。

Microsoft的MSTest具有ExpectedException属性,可以应用于测试方法:

[ExpectedException(typeof(ArgumentNullException))]
[TestMethod]
public void DoSomething()
{ ... }

如果上面的测试方法 NOT 抛出ArgumentNullException,MSTest会将测试标记为失败。

NUnit具有更精细的Assert.Throws,可以更准确地控制测试方法中预期异常的位置。