【发布时间】:2020-05-25 22:39:56
【问题描述】:
我有这个起订量设置:
_mockContext.Setup(x => x.CarSections).Returns(new List<CarSection> { _carSection }.ToDbSet());
这基本上将 List 分配给 DbContext.CarSections 的实体。
其中一种方法是异步方法。比如:
public async Task<CarSection> GetSectionAsync(int sectionId)
{
return await _context
.CarSections
.FirstOrDefaultAsync(s => s.CarSectionId == sectionId && s.StatusCode == 4);
}
当它通过该方法时,我得到了错误:
源
IQueryable的提供程序未实现IDbAsyncQueryProvider。只有提供者实现IDbAsyncQueryProvider可用于实体框架异步 操作。
我相信这是因为 .ToDbSet()。已尝试使用 Task.FromResult(new List<CarSection>{ _carSection },但 .Returns 需要“DbSet”而不是“Task”。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
不知道 ToDbSet 来自哪里,但假设它正在设置一个 Mock,您需要添加 mock.As
() 然后在该接口上设置方法。也许这个问题的答案有助于stackoverflow.com/a/43594599/491907
标签: c# unit-testing nunit moq