如何模拟返回void任务的函数
本文关键字:void 任务 函数 返回 何模拟 模拟 | 更新日期: 2023-09-27 18:08:21
我有一个函数
public Task DoSomethingAsync();
我想在测试中模拟它
实现这种方法的返回值的正确方法是什么?如果返回的是Task<int>
,我就用Task.FromResult<int>(5);
I could do
public async void DoSomethingAsync()
{
//implementation
}
但是它缺少await操作符,并且(至少对于Resharper)会加下划线。
在这里返回任务的正确方法是什么?
您需要做的就是返回一个Task
和(惊喜!:-)) Task<T>
来源于Task
, 它是一个 Task
。
所以只要返回bool
(或其他任何东西):
return Task.FromResult(true);
您也可以使用以下命令返回完整的Task
:
return Task.CompletedTask;
(注意:以上内容仅在。net 4.6版本中可用)
您可以返回Task.CompletedTask
(需要.net 4.6)或简单地返回Task.FromResult(true)
Task
如果这只是您想要实现的mock,那么创建一个用于您的类的接口:
public interface IDoStuff
{
Task DoSomethingAsync();
}
public class MyDoStuff : IDoStuff
{
public Task DoSomethingAsync()
{
...
}
}
然后简单地用IDoStuff接口创建一个模拟并模拟方法。