小编sak*_*das的帖子

还有一个ROLLBACK ERROR和tSQLt.ExpectException

这是场景:

  1. 存储过程sproc_a调用sproc_b.然后sproc_b调用sproc_c.典型的嵌套过程.
  2. Sproc_a做了一个SET XACT_ABORT ON; 并使用命名事务.
  3. Sproc_c引发了一个错误.
  4. tSQLt.ExpectException无法确认错误.测试应该是成功的但是失败了.

下面是复制场景的代码.

create procedure sproc_c
as
    RAISERROR('An error is found', 11, 1)
go

create procedure sproc_b
as 
    exec dbo.sproc_c;
go

create procedure sproc_a 
as 
SET QUOTED_IDENTIFIER OFF  
SET ANSI_NULLS ON  
SET NOCOUNT ON  
SET XACT_ABORT ON  
SET ANSI_WARNINGS OFF  

    declare @transactionName as varchar(50) = '[POC]';

    begin tran @transactionName
    save tran @transactionName

    exec dbo.sproc_b;
    commit tran @transactionName
go

CREATE PROCEDURE [test sproc_a]
AS
    -- Assert
    BEGIN …
Run Code Online (Sandbox Code Playgroud)

sql sql-server unit-testing tsqlt

5
推荐指数
1
解决办法
1175
查看次数

标签 统计

sql ×1

sql-server ×1

tsqlt ×1

unit-testing ×1