gpt4 book ai didi

c# - 如何使用 rhino mocks 测试异步查询

转载 作者:行者123 更新时间:2023-11-30 21:55:14 24 4
gpt4 key购买 nike

下面是我的函数

 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 是一个接口(interface):

public interface IRepository<T> : IDisposable where T : class
{
IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
}

出现以下错误

System.InvalidOperationException:源 IQueryable 未实现 IDbAsyncEnumerable。只有实现 IDbAsyncEnumerable 的源才能用于 Entity Framework 异步操作

我尝试像 https://msdn.microsoft.com/en-us/data/dn314429#async 那样实现 AsyncQueryProvider

但实现是用 Moq 显示的,而不是用 Rhino mock 显示的。

最佳答案

您必须使用在您提供的链接中实现的 TestDbAsyncEnumerable

替换:

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);

与:

var Books = new List<Books>(2){
new Books(),
new Books()
}.AsQueryable();

var asycEnumarable = new TestDbAsyncEnumerable<Books>(Books);

var viewStore = MockRepository.GenerateStub<IRepository<Books>>();

viewStore.Stub(x => x.FindBy(Arg<Expression<Func<Books, bool>>>.Is.Anything))
.Return(asycEnumarable);

关于c# - 如何使用 rhino mocks 测试异步查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32473956/

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