我有一个存储库。 对于Unitest,我使用一个返回FakeDbSet的Fake-Repository(在互联网上找到的实现) 使用IDbAsyncEnumerable-Implementation。
My Fake-Methode锁定如下:
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-Methode返回IQueryable。
我该怎么办?
答案 0 :(得分:0)
以下是MSDN中有关您案例的段落
单元测试时的异步方法
虽然仅在针对EF查询运行时支持异步方法,但是当针对DbSet的内存中测试运行时,您可能希望在单元测试中使用它们。
有关如何实现此方案的详细信息,请参阅&#39;使用异步查询进行测试&#39;使用模拟框架进行测试或使用您自己的测试进行测试的部分。
有关详细信息,请read this: