我想编写一个测试检查我的抽象类构造函数是否正确处理无效参数。我写了一个测试:
[TestMethod]
[ExpectedException(typeof(ArgumentException))]
public void MyClassCtorTest()
{
var dummy = Substitute.For<MyClass>("invalid-parameter");
}
这个测试没有通过,因为 NSubstitute 抛出 aTargetInvocationException
而不是ArgumentException
. 我寻求的实际例外实际上是其中InnerException
的一个TargetInvocationException
。我可以编写一个辅助方法,例如:
internal static class Util {
public static void UnpackException(Action a) {
try {
a();
} catch (TargetInvocationException e) {
throw e.InnerException;
} catch (Exception) {
throw new InvalidOperationException("Invalid exception was thrown!");
}
}
}
但我想,应该有某种通用的方法来解决这个问题。有吗?