执行单元测试后,tsqlt FakeTable 不回滚

tsqlt FakeTable not rolling back after unit test executed

我有一个非常简单的单元测试,我正在测试 tsqlt.FakeTable 的功能。但是,运行执行命令并插入数据后,它不会回滚到之前的状态。

当前 table:

[product01].[批次]

执行下面的代码后,table并没有回滚到上面。它覆盖了数据,我可以看到在 tables.

下创建的临时对象
CREATE PROCEDURE [test_product].[test Given batch size of 1000 and batch qty of 2 When sp_insert_batch is called Then two entries populated in batch table]

AS

BEGIN

DECLARE @batch_count INT = 2
DECLARE @batch_size INT = 1000
DECLARE @job_number NVARCHAR(10) = '1000000000'


DECLARE @actual_batch_count INT
DECLARE @actual_batch_size INT

-- Arrange

EXEC tSQLt.FakeTable '[product01].[batch]'

INSERT INTO product01.batch(batch_id,batch_qty,date_from, date_to, job_number)
VALUES('6003',100,'2020-06-01', '2020-06-30','5000000000')


    
-- Act


-- Assert


END

在上面代码有运行:

之后选择批次table

我还没有编写实际的断言逻辑,但我很困惑为什么 table 没有被回滚。对此有什么想法吗?

tSQLt 测试无法直接执行。您需要始终使用 运行 方法之一,例如 tSQLt.Run

如果像EXEC your.test;那样直接调用测试,则不会发生回滚,其他 tSQLt 功能也不会起作用。