我最近在调用包含(持久)计算列的表的过程上编写了一些 tSQLt 数据库单元测试(通过 Red Gate SQL 测试),并注意如果我使用 FakeTable SP,我发现计算列没有填充(他们评估为空)。计算列是测试的关键,所以我不能只忽略测试中的列,我宁愿不重复逻辑。
我正在使用 tSQLt.AssertEqualsTable SP 评估结果,因此我想确保两者的列值相同。
在实践中,我通过不使用 FakeTable 来解决这个问题,而是在测试结束时使用(部分)回滚事务语句(根据http://sqlity.net/en/585/how-上的博客文章) to-rollback-in-procedures/)或显式删除测试值。
我确信必须有更好的方法来编写这个测试,并欢迎任何建议。