C# Can';t从任务转换<;internface>;任务<;IEnumerable<;界面>&燃气轮机;

C# Can';t从任务转换<;internface>;任务<;IEnumerable<;界面>&燃气轮机;,c#,moq,C#,Moq,这应该是一个简单的问题,但它难住了我。我正在尝试设置模拟测试,但返回类型有问题 private IClassService classService; var mockClassService = new Mock<IClassService>(); mockClassService.Setup(c => c.GetClasses(It.IsAny<int>())) .Returns(() => { return Task.FromResult<

这应该是一个简单的问题,但它难住了我。我正在尝试设置模拟测试,但返回类型有问题

private IClassService classService;
var mockClassService = new Mock<IClassService>();
mockClassService.Setup(c => c.GetClasses(It.IsAny<int>()))
    .Returns(() => { return Task.FromResult<IClassInfo>(new ClassInfo()); });
classService = mockClassService.Object;
私有IClassService类服务;
var mockClassService=new Mock();
mockClassService.Setup(c=>c.GetClasses(It.IsAny()))
.Returns(()=>{return Task.FromResult(new ClassInfo());});
classService=mockClassService.Object;
我收到错误“无法从一个任务转换到另一个任务”


我知道我必须返回一个新的IClassInfo列表,但似乎不知道如何返回。谁能给我指点方向吗?

只要把
返回键改为

return Task.FromResult<IEnumerable<IClassInfo>>(new[] {new ClassInfo()});

对于空集合。您甚至可以将
null
放入其中,这取决于您的测试调用的内容,真正重要的部分是从result

获取
的正确类型,只需将
返回值更改为

return Task.FromResult<IEnumerable<IClassInfo>>(new[] {new ClassInfo()});

对于空集合。根据测试调用的内容,您甚至可以将
null
放在其中,真正重要的部分是从result

new[]{new ClassInfo()}获取
的正确类型
将用作
IEnumerable
也可以使用
ReturnsAsync
来代替
任务。FromResult
不需要。
new[]{new ClassInfo()}
将用作
IEnumerable
也可以使用
ReturnsAsync
来代替
任务。FromResult
不需要。谢谢!这正是我想要的。我不知道我怎么会错过这个。谢谢!这正是我想要的。我不知道我怎么会错过这个。