gpt4 book ai didi

c# - 在单元测试中模拟时,数据库/ Entity Framework 与内存列表之间的差异

转载 作者:行者123 更新时间:2023-11-30 12:33:10 25 4
gpt4 key购买 nike

我最近一直在用 mocking 做很多单元测试。让我觉得有点问题的一件事是查询内存列表(通过我的存储库的模拟)和通过 Entity Framework 直接查询数据库之间的区别。

其中一些情况可能是:

  1. 测试对数据库不区分大小写但区分大小写的过滤器参数针对导致错误失败的内存集合。

  2. Linq 语句可能会通过内存集合,但会因 Entity Framework 而失败,因为它们不受支持导致错误通过。

处理或解释这些差异的正确方法是什么,以便在测试中不会出现错误通过或失败?我真的很喜欢模拟,因为它让事情变得更快更容易测试。但在我看来,获得真正准确测试的唯一方法是仅针对 Entity Framework /数据库环境进行测试。

最佳答案

除了您执行的单元测试之外,您还应该创建针对生产中遇到的真实数据库设置运行的集成测试。

我不是 EF 的专家,但以 NHibernate 为例,您可以创建一个配置,该配置指向一个内存中的 SQLite 实例,然后您可以在其中运行快速测试(即在您想要获得的开发周期中尽快通过测试套件)。当您想针对真实数据库运行集成测试时,您只需更改 NHibernate 配置以指向真实数据库设置并再次运行相同的测试。

如果您无法使用 EF 实现类似的东西,那将是令人惊讶的。

关于c# - 在单元测试中模拟时,数据库/ Entity Framework 与内存列表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9847440/

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