2017-02-15 88 views
0

我試圖做一些Tsqlt測試,我想從測試中分離出我的數據。TSQLT過程從另一個過程調用假表過程

所以我有一個程序與數據:

alter PROCEDURE [Test_Calss].[test Data_Test] 
AS 
BEGIN 
EXEC tSQLt.FakeTable 'Sales.Customers'; 

INSERT INTO Sales.Customers(custid, companyname, contactname, contacttitle, address, city, region, postalcode, country, phone, fax) 
VALUES(1, N'Customer NRZBB', N'Allen, Michael', N'Sales Representative', N'teste Str. 0123', test', NULL, N'122', test', N'01-342789', N'030-033456'); 

我也有,我想用假表在它的另一個步驟:

ALTER PROCEDURE [Test_Calss].[test Count_Customer] 
AS 
BEGIN 

EXEC tSQLt.FakeTable 'Sales.Customers'; 

DECLARE @testres INT; SET @testres = 91; 

DECLARE @counter INT; 
SELECT @counter = COUNT(*) FROM [Test_Calss].[test Data_Test]; 

     EXEC tSQLt.AssertEquals @testres,@counter; 

END; 

我需要的假表從第一程序[Test_Calss]。[test Data_Test]在第二個被調用和測試。我嘗試過EXEC,但沒有奏效。

任何想法如何調用表及其常數?

回答

0

我這樣做的方法是在我的TestClass中有一個SetUp存儲過程。我非常自由地使用Test類(就像我在C#中所做的那樣),所以如果我真的需要的話,每個存儲過程可能會有多個測試類。

所以你的情況我會:

create PROCEDURE [Test_Calss].[SetUp] 
AS 
BEGIN 
EXEC tSQLt.FakeTable 'Sales.Customers'; 

INSERT INTO Sales.Customers(custid, companyname, contactname, contacttitle, address, city, region, postalcode, country, phone, fax) 
VALUES(1, N'Customer NRZBB', N'Allen, Michael', N'Sales Representative', N'teste Str. 0123', test', NULL, N'122', test', N'01-342789', N'030-033456') 
go 


create PROCEDURE [Test_Calss].[test Count_Customer] 
AS 
BEGIN 

DECLARE @testres INT; SET @testres = 91; 

DECLARE @counter INT; 
SELECT @counter = COUNT(*) FROM Sales.Customer; 

EXEC tSQLt.AssertEquals @testres,@counter; 

END; 
go 

exec tSQLt.RunTestClass 'Test_Calss'; 

tSQTt調用在TestClass每次測試前的SetUp存儲過程,你可以用它來編寫你的通用數據。

相關問題