gpt4 book ai didi

c# - NSubstitute - 模拟在返回任务的方法中抛出异常

转载 作者:可可西里 更新时间:2023-11-01 08:02:21 28 4
gpt4 key购买 nike

使用 NSubstitute ,如何模拟在返回任务的方法中抛出的异常?

假设我们的方法签名看起来像这样:

Task<List<object>> GetAllAsync();

下面是 NSubstitute 文档如何模拟非 void 返回类型的抛出异常。但这不编译:(

myService.GetAllAsync().Returns(x => { throw new Exception(); });

那么你是如何做到这一点的呢?

最佳答案

实际上,接受的答案模拟了一个被抛出的同步异常,这不是真正的 async 行为。正确的 mock 方式是:

var myService = Substitute.For<IMyService>();
myService.GetAllAsync()
.Returns(Task.FromException<List<object>>(new Exception("some error")));

假设您有这段代码和 GetAllAsync()

try
{
var result = myService.GetAllAsync().Result;
return result;
}
catch (AggregateException ex)
{
// whatever, do something here
}

catch 只会在 Returns(Task.FromException>() 时执行,而不是在接受的答案时执行,因为它会同步抛出异常。

关于c# - NSubstitute - 模拟在返回任务的方法中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38338906/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com