在TSQLT中,我尝试从存储过程返回结果并将其添加到变量中,以便我可以断言它是否与我预期的结果匹配。
我已经看到了很多函数返回结果的示例,但是没有调用存储过程的示例。
有人有他们可以分享的例子吗?
提前致谢
答案 0 :(得分:0)
看看这里: http://technet.microsoft.com/en-us/library/ms188655.aspx
有关从存储过程返回值的大量示例。在页面底部还有一个关于评估返回代码的示例。
答案 1 :(得分:0)
其实非常简单。
declare @variable int
exec @variable = _Stored_Procedure
答案 2 :(得分:0)
如果你想从存储过程中获取变量,一种方法是使用out参数
CREATE PROC MyTest
(@myVar int output)
AS
BEGIN
SET @myVar = 10
END
GO
DECLARE @x int
EXEC MyTest @myVar=@x output
SELECT @x
如果从存储过程中获取结果集,这里是我编写的tSQLt测试的示例。我没有为整个测试烦恼,因为这应该能满足你的需要。
CREATE TABLE #Actual (SortOrder int identity(1,1),LastName varchar(100), FirstName varchar(100), OrderDate datetime, TotalQuantity int)
-- Act
INSERT #Actual (LastName, FirstName, OrderDate, TotalQuantity)
EXEC Report_BulkBuyers @CurrentDate=@CurrentDate
这里的诀窍是你必须先创建#actual表。它应包含与存储过程返回的列相同的列。
除此之外,你可能已经注意到我在#actual表中有一个SortOrder列。这是因为我有兴趣测试为此特定报告返回的数据的顺序。 EXEC tSQLt.AssertEqualsTable将匹配类似的行,但不符合行在预期和实际中出现的顺序,因此确保顺序的方法是将SortOrder列(它是标识列)添加到两者中#expected和#actual