Mag*_*son 11 c# unit-testing asynchronous moq 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; }
}
Run Code Online (Sandbox Code Playgroud)
但Task返回方法会生成编译器错误:
CS1503参数1:无法从'System.Threading.Tasks.Task <System.Collections.Generic.List <UserQuery.MyModel>'转换为'System.Threading.Tasks.Task <System.Collections.Generic.IList <UserQuery.MyModel >"
我究竟做错了什么?
Ufu*_*arı 10
您可以使用ReturnsAync方法:
IList<MyModel> expected = new List<MyModel>() { new MyModel { Name = "Test" }};
mockRepo.Setup(x => x.GetAll()).ReturnsAsync(expected);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3490 次 |
| 最近记录: |