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

我能做什么?

Where()抛出IDbAsyncEnumerable未实现

以下是MSDN关于您的案例的段落

单元测试时的异步方法

虽然异步方法仅在针对EF查询运行时才被支持,但当针对DbSet的内存测试双精度运行时,您可能希望在单元测试中使用它们。

有关如何实现此场景的更多细节,请参阅使用mock框架进行测试或使用您自己的测试double进行测试的"使用异步查询进行测试"一节。

详细信息请阅读: