Процедура 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, но это не сработало.

Любая идея, как назвать таблицу и ее содержание?


person NFAL    schedule 15.02.2017    source источник


Ответы (1)


Я делаю это так, чтобы иметь SetUp хранимую процедуру в моем TestClass. Я довольно широко использую тестовые классы (так же, как и в 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, поэтому вы можете использовать ее для подготовки общих данных.

person DaveShaw    schedule 15.02.2017