gpt4 book ai didi

c# - 伪造 IDbSet 并支持异步操作

转载 作者:可可西里 更新时间:2023-11-01 08:13:35 28 4
gpt4 key购买 nike

我正在尝试在一个新项目中对我的第一个存储库进行单元测试,我们决定在该项目中主要使用 EF6 来处理异步内容。我在为我的模型伪造 IDbSet 并允许在使用新的异步细节之前使用任何 Linq 时遇到问题。

我正在使用 FakeDbSet 作为 provided in this post .如果我做一个简单的查询,比如

await set.FirstOrDefaultAsync(e => e.Approved);

这很好用。

当我尝试这样做时出现问题:

await set.OrderByDescending(e => e.Date)
.FirstOrDefaultAsync(e => e.Approved)`

然后我得到一个错误:

System.InvalidOperationException: The provider for the source IQueryable doesn't implement IDbAsyncQueryProvider.

通过分解流畅的语法并检查每一步的结果,我很清楚 IDbAsyncQueryProvider 在第一个“普通”Linq 运算符(例如 OrderByWhere选择)。

我怎样才能让它工作?

更新(因为有些困惑):有 2 个项目;称它们为存储库和测试。测试当然引用了Repository。对 Where 的调用发生在 Repository 中,它不知道 FakeDbSet(也不应该知道,因为它是一个仅测试类)。

更新 2:简单演示 project can be downloaded here .在运行单元测试之前恢复 Nuget 包。

最佳答案

这里有一个链接,指向您需要实现的确切类。 http://msdn.microsoft.com/en-us/data/dn314429.aspx#async

关于c# - 伪造 IDbSet<T> 并支持异步操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15566811/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com