Sql server tSQLt-处理多个SQL Server结果集

Sql server tSQLt-处理多个SQL Server结果集,sql-server,unit-testing,tsqlt,Sql Server,Unit Testing,Tsqlt,我正在使用tSQLt创建SQL Server单元测试 我正在测试的进程返回3个结果集。我的webAPI处理多个结果集并将其发送到UI 问题:在我的SQL Server单元测试中,如何处理这3个结果集?如果proc返回一个结果集,则很容易处理。我使用以下方法: Insert Into @ReturnData ( ID, Data1, Data2 ) Exec @Ret = StoreProcName 然后我可以对@ReturnData临时表运行一系列检查。但是我不明白如果一个proc返

我正在使用tSQLt创建SQL Server单元测试

我正在测试的进程返回3个结果集。我的webAPI处理多个结果集并将其发送到UI

问题:在我的SQL Server单元测试中,如何处理这3个结果集?如果proc返回一个结果集,则很容易处理。我使用以下方法:

Insert Into @ReturnData
(
 ID, 
 Data1, 
 Data2
)
Exec @Ret = StoreProcName
然后我可以对@ReturnData临时表运行一系列检查。但是我不明白如果一个proc返回多个结果集,如何处理/测试它。这可能吗


谢谢。

我建议您使用的方法是。这将获取一个参数作为要返回的结果集的编号,并调用被测代码(示例中为StoreProcName),返回该结果集,然后可以使用Insert..Exec捕获该结果集

这个过程的缺点是每次运行只捕获一个结果集,因此您需要多次调用它以返回所有结果集。我通常每次测试只查看一个结果集,这样我就可以集中精力回答该测试中的一个问题,但是如果您的结果集相互关联,并且您需要返回这两个结果集来评估您的测试,那么您将需要在测试中多次调用测试中的代码(the有更多关于这种情况的信息)


顺便说一句,我之前在博客上写过一些我可能感兴趣的意外行为。

达维格林有答案。但为了完整性,我想分享这一点,它扩展了基础:

如果调用存储过程并需要传入参数,请执行以下操作:

创建一个
@变量
,该变量包含嵌入参数值的“exec…”字符串。然后你可以这样做:

Declare @Variable Varchar(max)
Set @Variable = ‘exec STOREDPROCNAME ‘’param1’’, ‘’param2’’’;
EXEC tSQLt.ResultSetFilter 2, @Variable
数字2指定返回的第二个结果集

又好又快…;-)