【发布时间】:2016-09-20 01:26:58
【问题描述】:
我不知道为什么我的单元测试失败了: 被测方法:
public async Task<MyType> Get(string externalId)
{
if (externalId == null)
throw new ArgumentNullException();
if (externalId == "" || externalId == " ")
throw new FormatException();
// ...
}
单元测试:
Action action = async () => await controller.Get(null);
// Act & Assert
action.ShouldThrow<ArgumentNullException>();
并且有失败,因为错误消息说:
预计会抛出 ArgumentNullException,但没有抛出任何 execption。
这很奇怪,因为在调试这个测试时抛出了异常行!
我正在使用 xunit 和 fluentasserttions。
【问题讨论】:
-
为什么你的单元测试包含你的产品代码?我怀疑你复制并粘贴了错误的东西。请提供minimal reproducible example。
-
您不是在等待操作,因此即使发生异常也不会被观察到。使用 Func
代替 Action 并等待它,然后将观察到异常。 -
@MartinCostello 谢谢。