如何检查嵌套存储过程是否在tsqlt中执行

How to check if nested stored procedure was executed in tsqlt

我有条件执行嵌套存储过程的存储过程。

在单元测试中,我需要检查是否执行了这个嵌套存储过程。

我试过 tSQLt.SpyProcedure,但它似乎没有按我想要的方式工作。

我单元测试的内容

-- Assembly
exec tSQLt.SpyProcedure 'procedureName', 'raiserror(''procedureName was fired'',16,1)'

-- Assert
exec tSQLt.ExpectException 'procedureName was fired'

-- Action
exec masterProcedureName -- triggers procedureName

但是tsqlt.run 'unitestName'returns

failed: (Failure) Expected an error to be raised.

你有什么想法吗?

抱歉,以下代码确实有效,我在其他地方出错了。

尽管如您所述,您的方法有效,但我建议您改用 ..._spyprocedurelog table。它允许您捕获多次执行以及每次传递的参数。如果您在某个时候向外部过程添加错误处理,这仍然有效。

查看 SpyProcedure documentation 中的示例。