无法从Task <internface>转换为Task <ienumerable <interface>&gt;

时间:2017-08-18 13:09:26

标签: c# moq

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

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;

我收到错误“无法从任务&lt; IClassInfo&gt;转换为任务&lt; IEnumerable<IClassInfo&gt;&gt;”

我知道我必须返回一个新的IClassInfo列表,但似乎无法理解如何。有人可以给我指点吗?

1 个答案:

答案 0 :(得分:2)

只需将return更改为

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

如果您想在结果中使用ClassInfo

return Task.FromResult<IEnumerable<IClassInfo>>(Enumerable.Empty<IClassInfo>());

表示空集合。根据您的测试要求,您甚至可以将null放在那里,真正重要的部分是为FromResult获取正确的类型。