【问题标题】:cannot convert from 'IEnumerable' to 'IEnumerable无法从“IEnumerable”转换为“IEnumerable”
【发布时间】: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&lt;IEnumerable&lt;TaskToDo&gt;&gt;,但您只给它一个IEnumerable&lt;TaskToDo&gt; 来返回。您可以使用.Returns(Task.FromResult(list)),但.ReturnsAsync 是简写
  • 为什么你的整个问题都是一个引号(为什么你在所有内容前面都加上 > 来使它成为一个引号)?你在引用谁?
  • 感谢它解决了错误,但现在我的单元测试无法正常工作。它给了我感叹号。
  • 遗憾的是我们无法调试“给我一个感叹号”。请尝试调试您的问题,并在必要时使用相关详细信息打开另一个问题
  • 从“public async void”更改为“public async Task”解决了这个问题,谢谢。

标签: c# asp.net asp.net-mvc unit-testing asp.net-core


【解决方案1】:

您应该在您的设置中使用ReturnsAsync,如下所示

var mockrepo = new Mock<ITaskToDoRepository>();
                  mockrepo.Setup(x => x.GetTasks()).ReturnsAsync(list);

因为您的方法GetTasksTask&lt;&gt; 返回类型。

【讨论】:

  • 感谢它解决了错误,但现在我的单元测试无法正常工作。它给了我感叹号。
  • 您现在遇到的错误是什么?另外,不确定您想在这里实现什么。您正在定义 ITaskToDoRepository 的模拟,然后调用 mockrepo.Object.GetTasks()。你真的用创建的模拟对象测试什么?
  • 嗯,我对 UnitTest 很陌生,我想测试 CRUD 方法,但不知道如何。难道我的单元测试没用?
  • 顺便说一句,从“public async void”更改为“public async Task”修复了问题
猜你喜欢
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
  • 1970-01-01
  • 2022-07-04
  • 2017-11-16
相关资源
最近更新 更多