Я делал все возможное, чтобы следовать мудрости в http://www.sommarskog.se/share_data.html и документацию по tSQLt; стараясь, чтобы мои хранимые процедуры были легкими и относительно простыми, чтобы их было легко тестировать. Итак, я обнаруживаю, что создаю временную таблицу в основной хранимой процедуре, а затем работаю с этой временной таблицей во «вторичных» хранимых процедурах, вызываемых из основной. Это работает довольно хорошо, но оказывается немного неудобным для тестирования.
При изолированном тестировании "вторичной" хранимой процедуры временная таблица уже должна существовать. Похоже, что создание временной таблицы в процедуре [Set Up]
не сохраняется в модульных тестах, но создание полной таблицы сохраняется.
Итак, чтобы избежать повторения CREATE TABLE #temp
в каждом модульном тесте (с его полным определением столбца), я делаю вариант следующего:
EXEC tSQLt.NewTestClass 'SEtest';
GO
CREATE PROCEDURE [SEtest].[SetUp]
AS
BEGIN
CREATE TABLE SEtest.temptemplate (col1 int);
END;
GO
CREATE PROCEDURE [SEtest].[test example]
AS
BEGIN
-- Assemble
SELECT TOP (0) * INTO #temp FROM SEtest.temptemplate;
INSERT INTO #temp (col1)
VALUES (1),(2),(5),(7);
-- Act
EXEC dbo.REMOVE_EVEN_NUMBERS;
-- Assert
SELECT TOP (0) * INTO #expected FROM #temp;
INSERT INTO #expected (col1)
VALUES (1),(5),(7);
EXEC tSQLt.AssertEqualsTable '#expected', '#temp';
END;
GO
Есть ли лучшие способы согласования tSQLt с обменом данными между хранимыми процедурами через временные таблицы?