【发布时间】:2018-06-12 15:15:26
【问题描述】:
我正在尝试使用输出参数来监视过程。这个过程有两个参数,一个输入参数,一个输出参数。
输入参数的默认值为NULL。
CREATE PROCEDURE spExampleProcedure
@INPUTPARAM DATETIME = NULL,
@OUTPUTPARAM INT = NULL OUTPUT
AS
....
我正在尝试测试调用 spExampleProcedure 的过程。 spExampleProcedure 使用不同的@INPUTPARAM 多次调用。我想检查该参数并根据输入返回不同的值。 (一种更高级的模拟。)
EXEC tSQLt.SpyProcedure 'dbo.spExampleProcedure',
'SET @OUTPUTPARAM = CASE WHEN @INPUTPARAM IS NULL THEN 1 ELSE 2 END'
这不起作用。我真的很希望能够像我做一个函数一样伪造/监视一个过程,因为当一个存储过程被多次调用时它真的很有帮助。
我考虑过的一个选项是将我的 spExampleProcedure 转换为函数,但这只会避免我的问题。查看 spy 程序,我看不出为什么我的设置不应该工作,除了它创建的假程序可能没有默认值 null。
【问题讨论】:
-
tSQLt 在监视过程时保留
OUTPUT参数,并且设置它们的值有效。这意味着,您遇到的问题可能在其他地方。请把你的整个测试用例贴出来好吗? -
感谢您的评论。我开始编译我的测试用例提供给你,在这样做的同时,我注意到了问题的根源。我的存储过程使用了一个伪造的表,我没有在这个表中插入一个值。因此,当调用该过程时,该值为 null。
标签: tsqlt