gpt4 book ai didi

c# - 使用现有数据库中的数据在 ASP.NET MVC 中创建数据库模拟

转载 作者:太空狗 更新时间:2023-10-29 23:19:01 24 4
gpt4 key购买 nike

我有一个现有的 ASP.NET MVC 应用程序,在 SQL Server 数据库中有一些示例数据,它工作正常..

假设我拥有所有必要的存储库和 IOC,是否有一个工具可以从一组表中提取数据,并将其“冷冻干燥”到模拟对象中(可能使用 XML 文件来存储数据),以便我可以分离数据库并将模拟数据用于我的单元测试?

最佳答案

根据您要测试的具体内容,可能会有不同的方法。

如果您想测试数据访问逻辑,那么这不再是单元测试而是集成测试。对于这种测试,最好能够轻松地用一些更轻的甚至内存中的数据库(如 SQLite)替换真实数据库,这些数据库将在运行每个测试之前重建。如果您使用的是 ORM,则此任务很容易。您需要做的就是从现有数据库生成 SQL 脚本(INSERT INTO...),修改方言并将其调整为 SQLite(如有必要),读取并注入(inject) SQLite 文件,最后剩下的就是指示您的数据访问层使用 SQLite 方言和连接字符串进行单元测试。

现在,如果您不使用 ORM,并且您的数据访问逻辑与 MSSQL 相关联,那么事情会变得更糟,您将需要一个实时数据库来执行这些集成测试。在这种情况下,我建议您通过仅修改连接字符串来复制您将用于测试的真实数据库。您将再次需要正确地设置拆卸(最好是在事务中)这个测试数据库,以便将其置于测试的已知状态。

如果您想测试依赖于这些存储库的代码(例如您的 Controller ),您甚至不需要为模拟数据而烦恼,因为您的 Controller 依赖于抽象存储库而不是真正的实现(不是它们),因此您可以轻松地模拟存储库的方法,以便测试 Controller 中的逻辑。

关于c# - 使用现有数据库中的数据在 ASP.NET MVC 中创建数据库模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3094927/

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