c# - 有什么方法可以调用数据库数据在单元测试中提供
问题描述
这是我的测试:
[Test]
public async Task Late_Test()
{
var options = new DBContextOptionsBuilder<MyContext>()
.Options;
using(var context = MyContext(options))
{
//Act?
}
// Assert?
}
这是我试图为其创建测试的服务:
public async Task<int> LatesInMin(Model1 model1, bool isbool)
{
//code here
}
服务中的代码还需要附加到 Model1 的外键中的数据。我可以从数据库中调用数据并在调用服务时将其用作参数吗?还是我也必须手动提供该数据?我尝试使用 linq 导致错误,我搜索到您不能使用扩展方法,例如 'Where()' 和 'FirstOrDefault()'
解决方案
为了使您的测试独立且可预测,您需要确保设置和拆除与测试相关的任何内容。因此,您应该使用测试代码旁边的数据或在每次测试之前加载的关联文件中的数据作为数据源的种子。我基本上想要得到的是,我认为您应该将所需的所有数据从数据库中提取出来,将其保存到某个文件中,然后在运行每个测试之前将其加载。通过“加载”,您可以启动一个真实的数据库并保存值,或者您可以使用InMemoryDatabase
实体框架提供的功能。
推荐阅读
- r - 两个列表与部分字符串匹配的组合(在 R 中)
- ios - iOS没有显示来自自定义添加的字体形式谷歌字体的变音字母
- python - 将字符串从 json 转换为 Python:问题
- node.js - Open API 3 中路径的优先级
- java - java.sql.SQLException:MySQL 服务器正在使用 --read-only 选项运行,因此无法执行此语句
- javascript - canvas html + javascript中的轨道位置
- reactjs - react 会执行两次滑动动画
- javascript - 主页名称出现在 AppBar 后面,我该如何解决?
- c# - 使用 \b 时正则表达式不匹配确切的字符串
- python - 读取包含单词 NUL 的 CSV 文件的 Python 问题