【发布时间】:2015-09-09 07:54:59
【问题描述】:
以下是我的功能
public async Task<IEnumerable<Books>> GetAsync(Guid customerId) {
var BookList= await _bookStore.FindBy(AnExpression(customerId)).ToListAsync();
return vehicleList;
}
我试图模拟返回 IQueryable 的 _bookStore.FindBy() 方法
var Books= new List<Books>(2){
new Books(),
new Books()
}.AsQueryable();
mock.Expect(viewStore => viewStore.FindBy(Arg<Expression<Func<Books, bool>>>.Is.Anything)).Return(Books);
viewStore是一个接口:
public interface IRepository<T> : IDisposable where T : class
{
IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
}
我收到以下错误
System.InvalidOperationException:源 IQueryable 未实现 IDbAsyncEnumerable。只有实现 IDbAsyncEnumerable 的源才能用于实体框架异步操作
我尝试像 https://msdn.microsoft.com/en-us/data/dn314429#async 那样实现 AsyncQueryProvider
但是实现是用 Moq 而不是 Rhino mock 显示的。
【问题讨论】:
-
请添加
_vehicleViewStore的代码。 -
@OldFox。它实际上是 bookStore 及其存储库对象。基本上是dbcontext。实体框架
-
我知道...我要求实现,因为我想在...之前调试我的答案。
-
return Context.Set
().Where(predicate); -
这是方法的主体 :\ 我要了你嘲笑的类 (
_vehicleViewStore)
标签: c# entity-framework unit-testing rhino-mocks iqueryable