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# - 在ABP中从CrudAppService检索子实体

c# - Async TCP Server 代码示例分析

c# - 索引频繁更新的FieldCache

c# - 使用 Katana OpenID Connect 中间件解决 OnSendingHeaders 死锁

c# - 返回内存中(缓存的)集合,或来自异步等待响应的任务

c# - 具有网络凭据的 HttpClient.GetAsync

c# - ConfigurationManager.AppSettings[key] 在类库中不可访问

C# 使用条件运算符插入字符串

c# - 如何在 F# 中返回实现 IAsyncActionFilter 的任务?

c# - 升级到 .NET 4.0 后,Debugger.Launch() 现在使我的 Windows 服务崩溃