【问题标题】:Where() throws IDbAsyncEnumerable not implementedWhere() 抛出 IDbAsyncEnumerable 未实现
【发布时间】:2015-05-28 04:24:50
【问题描述】:

我有一个存储库。 对于 Unitest,我使用返回 FakeDbSet 的 Fake-Repository(在 Internet 上找到的实现) 使用 IDbAsyncEnumerable-Implementation。

我的 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。

我能做什么?

【问题讨论】:

    标签: c# unit-testing repository async-await


    【解决方案1】:

    这是 MSDN 关于您的案例的段落

    单元测试时的异步方法

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

    有关如何实现此方案的更多详细信息,请参阅使用模拟框架进行测试或使用您自己的测试替身进行测试的“使用异步查询进行测试”部分。

    详情请read this

    【讨论】:

      猜你喜欢
      • 2014-12-05
      • 1970-01-01
      • 2019-02-09
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多