如何模拟返回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)会加下划线。

在这里返回任务的正确方法是什么?

如何模拟返回void任务的函数

您需要做的就是返回一个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接口创建一个模拟并模拟方法。