我已经缩减了一些代码,我试图测试下面的例子
我已经按照我在网上找到的建议进行了以下设置。
我的问题是,当测试运行时,它永远不会从Task.WhenAll
返回我只限于.net 4.5.2所以我没有使用Task.FromException。
调用依赖项的代码是:
public async Task<int> CountCustomFields(bool onlyVisible)
{
var countClientCustomField = clientService.CountCustomFieldsAsync(onlyVisible);
try
{
await Task.WhenAll(countClientCustomField);
}
catch (Exception ex)
{
// some loggging etc
}
finally
{
// some tidy up & set the result
}
return result;
}
模拟在以下测试方法中配置:
[Test]
public void WhenAsyncMethodThrows_WeShouldCatchTheException()
{
mockClientService.Setup(x => x.CountCustomFieldsAsync(It.IsAny<bool>()))
.Returns(new Task<int>(() => { throw new Exception("err"); }));
Assert.DoesNotThrowAsync(() => sut.CountCustomFields(true));
}
我正在更新示例以包含评论中提到的依赖项。我认为可以忽略这是一个微服务。实际上,它可能是任何返回任务的依赖
public interface IClientService
{
Task<int> CountCustomFieldsAsync(bool onlyVisible);
}