我一直在最近调用包含(持久化)计算列的表的过程上编写一些tSQLt数据库单元测试(通过Red Gate SQL Test),并注意如果使用FakeTable SP,我发现计算列没有填充(它们评估为空)。计算列是测试的关键,所以我不能忽略测试中的列,我宁愿不复制逻辑。在计算列上使用tSQLt进行单元测试
我使用tSQLt.AssertEqualsTable SP评估结果,所以我想确保列值在两者中都是相同的。
在实践中,我已经解决此通过不使用FakeTable工作,但(在http://sqlity.net/en/585/how-to-rollback-in-procedures/%的博客文章)使用(部分)ROLLBACK TRANSACTION语句在测试结束或显式删除测试值。
我敢肯定,这个测试必须有更好的编码方式,并且欢迎任何建议。
谢谢Sabastian,这非常有帮助。我试图把这两个测试结合起来,但是当你指出这些应该是不同的测试。 – DaveGreen 2012-02-27 09:18:21