我有一个非常简单的单元测试,测试tsqlt.faketable的功能。但是,在运行命令并插入数据之后,它不会回滚到以前的状态。
当前表格:
[product01].[批次]
执行下面的代码后,表不会回滚到上面的代码。它覆盖了数据,我可以看到在tables下创建的temp对象。
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
运行上述代码后选择批处理表:
我还没有编写实际的Assert逻辑,但是我不明白为什么不回滚表。有什么想法吗?
1条答案
按热度按时间unguejic1#
tsqlt测试不能直接执行。您需要始终使用以下run方法之一
tSQLt.Run
如果你直接调用测试EXEC your.test;
,不会发生回滚,其他tsqlt特性也不会工作。