繁体   English   中英

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

[英]Creating Database Mocks in ASP.NET MVC using Data from Existing Database

我有一个现有的ASP.NET MVC应用程序,在SQL Server数据库中有一些示例数据,效果很好。

假设我已经准备好所有必需的存储库和IOC,是否有一个工具可以从一组表中提取数据,并将其“冻结”到一个模拟对象中(也许使用XML文件来存储数据) ,以便我可以分离数据库并将模拟数据用于单元测试?

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

如果要测试数据访问逻辑,则这不再是单元测试,而是集成测试。 对于这类测试,最好是用一些更轻巧的内存数据库(例如SQLite)轻松替换实际数据库,该数据库将在运行每个测试之前重新构建。 如果您使用的是ORM,则此任务很容易。 您需要做的就是从现有数据库中生成SQL脚本(INSERT INTO ...),修改方言并使之适应SQLite(如有必要),读取并注入到SQLite文件中,最后剩下的就是指示您数据访问层,以使用SQLite方言和连接字符串进行单元测试。

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

如果您要测试依赖于这些存储库(例如,控制器)的代码,则无需担心模拟数据,因为您的控制器依赖于抽象存储库而不是实际的实现(不是),因此,您可以轻松地模拟存储库的方法,以测试控制器中的逻辑。

我不知道您要做什么的直接方法,但是MSSQL支持导出到CSV,Access和Excel。 虽然,这要求您更改中间层的数据访问层,而且,我不认为这可以回答您的问题:

将其“冷冻干燥”成模拟对象

我不确定。 仅在与新数据库相同的SQL Server上或在开发SQL服务器上还原数据库的备份是否可行?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM