首页 > 解决方案 > IQueryable 作为列表

问题描述

我有一个从数据库中检索书籍的工作服务,我目前正在为此进行测试。该服务如下所示:

public async Task<List<Book>> GetBooks()
{
   ........
   ........
   IQueryable results = repository.Query();
   var list = await Task.Factory.StartNew(() => results as List<Book>);
   return list
}

此代码在应用程序运行时运行良好。

在测试期间,我可以使用调试器检查结果变量是否具有我需要的值。但是列表变量具有含义。这是我的起订量的定义:

var books = new List<Book>();
for (int i = 1; i < 4; i++)
{
    books.Add(new Book
    {
        new Book { Id = i , Author = $"New Author {i}"}
    });
}

var mockBookRepository = new Mock<IBookRepository>();
mockBookRepository 
    .Setup(x => x.Query())
    .Returns(books.AsQueryable());

我需要做一个将返回变量列表中的值的测试。更改GetBooks()方法无效

标签: c#

解决方案


你正在尝试做一个你应该实现的无效演员表

public async Task<Object> GetBooks()
{
   //........
   return await repository.Query().ToListAsync()
}

附言

确保 repository.Query() 返回 anIQueryable<Book>而不仅仅是IQueryable


推荐阅读