2017-02-15 2 views
0

Im essayant de faire un test Tsqlt, et je veux séparer mes données du test.TSQLT Procédure appelle faux tableau d'une autre procédure

J'ai donc une procédure avec des données:

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'); 

aussi j'ai une autre procédure que je veux utiliser le tableau faux dans ce:

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; 

J'ai besoin du tableau faux de la première procédure [Test_Calss]. [test Data_Test] pour être appelé et testé dans le second. J'ai essayé avec EXEC mais ça n'a pas marché.

Une idée Comment appeler la table et son contenu?

Répondre

0

La façon dont je le fais est d'avoir une procédure stockée SetUp dans mon TestClass. J'utilise les classes de test assez généreusement (comme je le fais en C#) de sorte que je pourrais avoir plus d'une classe de test par procédure stockée si j'en avais vraiment besoin.

Donc, dans votre cas je l'aurais:

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 appelle la procédure stockée SetUp avant chaque test dans le TestClass afin que vous pouvez utiliser pour préparer vos données communes.