4

我刚刚开始在 redgate 的 sql 测试中使用tsqlt 。我必须处理遗留数据库中相当大的表(大量列)。将一些假数据插入此类表的最佳做法是什么(“脚本作为”插入语句非常大) - 因此它们会使我的单元测试的“安排部分”字面上不可读。我可以分解出这样的代码吗?还有一种方法不仅可以编写插入语句的脚本,还可以自动填充一些值?谢谢。

4

1 回答 1

4

我同意您的评论,即您不需要填写插入语句中的所有列。

tSQLt.FakeTable 从列以及计算列和标识列中删除所有非空约束(尽管最后两个可以使用 FakeTable 的特定参数恢复)。

因此,您只需要填充与您的测试代码相关的列,这通常只是表中列的较小子集。

我在这篇文章中更详细地描述了这一点,其中还包含一些您可能想知道的其他“陷阱”。

此外,我建议如果您有许多测试都需要伪造同一个表并插入数据,那么您可以考虑使用 SetUp 例程 - 这是测试类(模式)中的一个存储过程,称为 SetUp,并在该模式中的每个测试之前由 tSQLt 调用。它们还不会显示在 RedGate 的 SQL 测试窗口中(我建议将其作为改进),但仍然可以使用。这可能会使它更难看到 - 但确实模块化了该代码,从而减少了相同的重复代码。

于 2014-01-11T08:20:35.477 回答