如何模拟函数返回void任务

时间:2016-09-22 12:45:26

标签: c# asynchronous

我有一个功能

UISupportedExternalAccessoryProtocols

我想为测试目的进行模拟。

实现此类方法的返回值的正确方法是什么。如果它会返回public Task DoSomethingAsync(); 或其他内容,我会使用Task<int>

我能做到

Task.FromResult<int>(5);

然而,缺少await运算符,并且(至少使用Resharper)会加下划线。

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

3 个答案:

答案 0 :(得分:8)

您需要做的就是返回Task和{surprise!:-))Task<T>派生自Task它是 {{ 1}}。请参阅此reference

所以只需返回Task(或其他任何内容):

bool

您还可以使用以下方式返回completed return Task.FromResult(true);

Task

(注意:以上仅适用于.NET 4.6)

答案 1 :(得分:2)

您可以返回... <tr ng-repeat="batch in allBatches | orderBy: 'Sort' | filter: filterTerm"> ... (需要.net 4.6)或仅Task.CompletedTask

这个想法就是返回Task.FromResult(true)

答案 2 :(得分:0)

如果只是想要实现的模拟,请创建一个用于您的类的接口:

public interface IDoStuff
{
    Task DoSomethingAsync();
}

public class MyDoStuff : IDoStuff
{
    public Task DoSomethingAsync()
    {
        ...
    }
}

然后只需使用接口IDoStuff创建一个模拟并模拟该方法。