Where()抛出IDbAsyncEnumerable未实现
本文关键字:实现 IDbAsyncEnumerable 抛出 Where | 更新日期: 2023-09-27 17:50:52
我有一个存储库。对于Unitest,我使用一个Fake-Repository返回一个FakeDbSet(在互联网上找到的实现)IDbAsyncEnumerable-Implementation。
我的fake - method锁如下:
public IQueryable<Foo> GetAll()
{
var foo=new Foo();
return new FakeDbSet<Foo>() { foo }.AsQueryable();
}
所以这段代码在UnitTest中工作:
Foo[] foo = await MyRepo.GetAll().ToArrayAsync();
但是这个不
Foo[] foo = await MyRepo.GetAll().Where(x=>x.Id==1).ToArrayAsync();
错误:源IQueryable没有实现IDbAsyncEnumerable。
因为where - method返回的是IQueryable
我能做什么?
以下是MSDN关于您的案例的段落
单元测试时的异步方法
虽然异步方法仅在针对EF查询运行时才被支持,但当针对DbSet的内存测试双精度运行时,您可能希望在单元测试中使用它们。
有关如何实现此场景的更多细节,请参阅使用mock框架进行测试或使用您自己的测试double进行测试的"使用异步查询进行测试"一节。
详细信息请阅读: