执行单元测试后,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 功能也不会起作用。
我有一个非常简单的单元测试,我正在测试 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 功能也不会起作用。