问题描述
[TestMethod]
public async void Select_getallTask()
{
//Arrange
IEnumerable<TaskTodo> list = new List<TaskTodo>();
var mockrepo = new Mock<ITaskTodoRepository>();
mockrepo.Setup(x => x.GetTasks()).Returns(list);
//Act
var data = mockrepo.Object.GetTasks();
//Assert
Assert.AreEqual(data,list);
}
这给了我错误
mockrepo.Setup(x => x.GetTasks()).Returns(list);
错误:
Severity Code Description Project File Line Suppression State
Error CS1503 Argument 1: cannot convert from
'System.Collections.Generic.IEnumerable<TodoApp.Models.TaskTodo>' to
'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TodoApp.Models.TaskTodo>>' UnitTest_TodoApp J:\Source\RealApp\UnitTest_TodoApp\ListTest.cs 97 Active
回购是
public interface ITaskTodoRepository
{
Task<IEnumerable<TaskTodo>> GetTasks();
TaskTodo GetTasksById(Guid Id);
}
我希望你能理解这个问题。谢谢
解决方法
您应该在设置中使用 ReturnsAsync
,如下所示
var mockrepo = new Mock<ITaskToDoRepository>();
mockrepo.Setup(x => x.GetTasks()).ReturnsAsync(list);
因为您的方法 GetTasks
是 Task<>
返回类型的类型。