c# - 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()方法无效
解决方案
你正在尝试做一个你应该实现的无效演员表
public async Task<Object> GetBooks()
{
//........
return await repository.Query().ToListAsync()
}
附言
确保 repository.Query() 返回 anIQueryable<Book>
而不仅仅是IQueryable
推荐阅读
- sql-server - 如何在 Microsoft SQL Server 上安装 IBM Netezza OLEDB Provider?
- keycloak - Keycloak 在 OpenID 配置响应中缺少端口
- java - Javaparser:如何获取Node所属方法的名称?
- regex - 用每行的第一个字符替换空格
- vue.js - vuetify 突然显示奇怪的图标
- python - 如何格式化 MySql 表以避免“不正确的字符串值”错误?
- bash - BASH 如果命令包含“此文本”,请执行另一个命令?
- javascript - API get 调用返回状态 400
- elasticsearch - 查找nested.nested Elastic Search 文档的计数
- c++ - 在 C++ 中为堆栈编写推送方法