我是使用tSQLt的新手,对可用的断言函数有点吃力。tSQLt.AssertEmptyTable方法很好,但是如何应用";而不是";条件,即我想断言表包含数据?
这取决于您实际想要测试的内容。您想验证该表中行和列的内容,还是只验证它是否有一行或多行?
如果是前者,则tSQLt.AssertEqualsTable将允许您将一个表(例如,用您期望的值填充的#expected表(的内容与测试中的表EXEC tSQLt.tSQLt.AssertEqualsTable '#expected', 'my_table';
进行比较。此断言的一个有用特性是,只验证#中预期的列。因此,如果#expected有十列,而my_table为十二列,则只检查这十列的内容,其他两列将被此断言忽略。这可能很有用,例如,当这两列是自动填充的,因此更难测试时,例如IDENTITY列和GETDATE((默认值。显然,如果#expected的列在my_table上不存在,那么测试无论如何都会失败。
如果你只想检查表中是否有任何数据,你可以做一些类似IF NOT (SELECT COUNT(*) FROM my_table) > 0 EXEC tSQLt.Fail 'my_table contains no data'
的事情