TSQLT过程从另一个过程调用伪表

时间:2017-02-15 09:39:08

标签: sql-server tsql stored-procedures 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,但它没有用。

任何想法如何调用表格及其内容?

1 个答案:

答案 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存储过程,以便您可以用来准备公共数据。