【发布时间】:2021-01-08 16:24:56
【问题描述】:
[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(list),而不是.Returns(list)。您的方法返回一个Task<IEnumerable<TaskToDo>>,但您只给它一个IEnumerable<TaskToDo>来返回。您可以使用.Returns(Task.FromResult(list)),但.ReturnsAsync是简写 -
为什么你的整个问题都是一个引号(为什么你在所有内容前面都加上 > 来使它成为一个引号)?你在引用谁?
-
感谢它解决了错误,但现在我的单元测试无法正常工作。它给了我感叹号。
-
遗憾的是我们无法调试“给我一个感叹号”。请尝试调试您的问题,并在必要时使用相关详细信息打开另一个问题
-
从“public async void”更改为“public async Task”解决了这个问题,谢谢。
标签: c# asp.net asp.net-mvc unit-testing asp.net-core