我在界面中有以下方法..
Task<SearchResult<T>> SearchAsync(TU searchOptions);
效果很好。
现在我正在尝试进行单元测试来测试何时出现问题 - 并且代码会引发异常。
在这种情况下,我已经设置了抛出一个方法HttpRequestException
。我的单元测试未能表明我抛出了该异常..
var result = Should.Throw<HttpRequestException>
(async () => await service.SearchAsync(searchOptions));
单元测试的错误消息是
应该.ChuckedAWobbly
var 结果 = 应该
扔
System.Net.Http.HttpRequestException
但不
So the 断言框架 http://shouldly.github.io/是说:您预计会出现异常,但没有抛出任何异常。
当我单步执行代码时,100% 抛出异常。
任何人都可以看到我的单元测试代码做错了什么吗?
问题是您的断言框架不理解异步方法。我建议您向他们提出问题。
在此期间,您可以使用来源Should.Throw https://github.com/shouldly/shouldly/blob/master/src/Shouldly/ShouldThrowExtensions.cs自己写MyShould.ThrowAsync
:
public static async Task<TException> ThrowAsync<TException>(Func<Task> actual)
where TException : Exception
{
try
{
await actual();
}
catch (TException e)
{
return e;
}
catch (Exception e)
{
throw new ChuckedAWobbly(new ShouldlyMessage(typeof(TException), e.GetType()).ToString());
}
throw new ChuckedAWobbly(new ShouldlyMessage(typeof(TException)).ToString());
}
并像这样使用它:
var result = await MyShould.ThrowAsync<HttpRequestException>
(async () => await service.SearchAsync(searchOptions));
或稍微简单且等效的:
var result = await MyShould.ThrowAsync<HttpRequestException>
(() => service.SearchAsync(searchOptions));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)