我试图做一些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 :(得分:1)
我这样做的方法是在SetUp
中设置TestClass
存储过程。我非常自由地使用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在SetUp
中的每次测试之前调用TestClass
存储过程,以便您可以用来准备公共数据。