c# - 使用 MOQ 模拟异步 Get 方法

标签 c# .net async-await moq

如何摆脱此错误消息:

Error   5   Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TGB.Business.DTO.SchoolyearDTO>>' to 'System.Collections.Generic.IEnumerable<TGB.Business.DTO.SchoolyearDTO>'. An explicit conversion exists (are you missing a cast?)   

我以为我的 Task.FromResult 会解决这个问题,但没有......

mockService.Setup<IEnumerable<SchoolyearDTO>>(c => c.GetSchoolyears()).Returns(
                    Task.FromResult(Enumerable.Empty<SchoolyearDTO>()));

public async Task<IEnumerable<SchoolyearDTO>> GetSchoolyearsAsync()
{
    var schoolyears = await ...
}

最佳答案

GetSchoolyearsAsync是一个异步方法,所以它返回一个 Task<IEnumerable<SchoolyearDTO>>而不仅仅是 IEnumerable<SchoolyearDTO> .您需要在 SetupGet 的类型参数中指定

mockService.SetupGet<Task<IEnumerable<SchoolyearDTO>>>(c => c.GetSchoolyears()).
    Returns(Task.FromResult(Enumerable.Empty<SchoolyearDTO>()));

关于c# - 使用 MOQ 模拟异步 Get 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30909855/

相关文章:

c# - CSLA .NET - Child_Fetch 未按预期工作

c# - 如何将RGB字符串转换为Hex字符串

c# - Angular 9 组件和 .NET Core 应用程序未作为 SPA 运行

c# - 有没有办法表示很长的数字?

c# - 异步和等待 - 控制台、Windows 窗体和 ASP.NET 之间的区别

c# - 启动一个任务并稍后多次等待

c# - 在字典中使用类型 'null' 而不是 int

c# - .NET 内存泄漏

.net - 如何为使用 Entity Framework 4.2 的代码编写单元测试?

c# - 如何使用 async/await 异步创建 DispatcherObject?