c# – 如何模拟返回Task>的方法?

前端之家收集整理的这篇文章主要介绍了c# – 如何模拟返回Task>的方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试对返回任务>的方法进行单元测试:
void Main()
{
    var mockRepo = new Mock<IRepository>();
    mockRepo.Setup(x => x.GetAll()).Returns(new List<MyModel>() { new MyModel { Name = "Test" } });  // works

    mockRepo.Setup(x => x.GetAllAsync()).Returns(Task.FromResult(new List<MyModel>() { new MyModel { Name = "Test" } }));  // error

    var result = mockRepo.Object.GetAll();
    result.Dump();
}

public interface IRepository
{
    Task<IList<MyModel>> GetAllAsync();
    IList<MyModel> GetAll();
}

public class MyModel
{
    public string Name { get; set; }
}

但Task返回方法生成编译器错误

CS1503 Argument 1: cannot convert from@H_502_8@ ‘System.Threading.Tasks.Task<System.Collections.Generic.List<UserQuery.MyModel>’@H_502_8@ to@H_502_8@ ‘System.Threading.Tasks.Task<System.Collections.Generic.IList<UserQuery.MyModel>’

我究竟做错了什么?

解决方法

您可以使用ReturnsAync方法
IList<MyModel> expected = new List<MyModel>() { new MyModel { Name = "Test" }};
mockRepo.Setup(x => x.GetAll()).ReturnsAsync(expected);
原文链接:https://www.f2er.com/csharp/100272.html

猜你在找的C#相关文章