当我在.Net(c#)编码时,我使用NUnit和Rhino Mock进行测试。没有做太多的数据库编码(Store Procs)。我们如何使用数据库编码(Store Procs)进行TDD?
答案 0 :(得分:1)
如果您正在使用SSDT数据库项目,则可以使用SSDT单元测试中的重命名技巧来模拟代码入口点,就像在常规C#中一样。不是真正的IoC,但要完成工作,直到出现更好的东西。
我写了一篇关于它的帖子:
你也可以为你的开发提供tSQLt,它支持比SSDT更好的DI。
答案 1 :(得分:0)
1)有一个框架,允许你获取一个DB对象,并复制它。当您拥有包含存储在文件系统中的表定义的数据库源代码时,这很有用。
将表的副本复制到临时数据库中。包括索引等。
存储过程或触发器的副本,用于替换表格/其他名为SP的所有数据库名称和临时数据库
能够使用从现有表克隆的数据(使用某些过滤器)或存储的准备数据集预先填充表格,例如,作为bcp输入文件
2)有一个框架,用指定的测试数据加载指定的测试表,然后克隆所有其他所需的SP /触发代码
3)有一个框架来执行克隆的存储过程,并评估从它们返回的结果和表中剩下的数据,以防它们更新数据。
为了给它带来味道,开发和部署完整 TDD系统需要花费几个人月的时间,其中包括此处列出的所有功能作为一个小子集。
还有一些纪念产品可供选择:
http://www.infoq.com/articles/tdd-dbpro-Foy
此外,还有针对特定数据库后端的产品,不确定您使用哪一个:
Postgres:http://en.dklab.ru/lib/dklab_pgunit/
补充阅读:
MSDN http://msdn.microsoft.com/en-us/magazine/cc164243.aspx
http://tddbootcamp.com/2010/01/27/writing-tests-for-stored-procedures/