Я новичок в SQL, пытаюсь создать модульные тесты для хранимых процедур в устаревшей базе данных. Хранимые процедуры извлекают входные данные из временных таблиц, что, по-видимому, упрощает их тестирование. Я хотел бы создать и заполнить эти таблицы в процедуре настройки тестовой системы, запустить хранимую процедуру и затем оценить результаты.
Я настроил свою тестовую среду с помощью Visual Studio 2013 с проектом модульного тестирования SQL Server, как показано в этот пост.
Мой Pre-test
выглядит довольно скучно:
CREATE TABLE #foo(
/* fields */)
/* Populate temp table here */
Затем в теле Test
я вызываю хранимую процедуру, которая зависит от таблицы #foo:
DECLARE @RC AS INT;
SELECT @RC = 0;
EXECUTE @RC = [dbo].[MyStoredProcedure] ;
SELECT @RC AS RC;
Но когда я запускаю тест, я получаю следующую ошибку:
Sql Error: 'Invalid object name '#foo'.' (Severity 16, State 0)
Test method DatabaseTestProj.TestSpike.dbo_SomeStoredPocTest threw exception:
System.Data.SqlClient.SqlException: Invalid object name '#foo'.
На самом деле кажется, что я даже не могу создать переменную в Pre-Test и получить к ней доступ из основной части теста.
Каков «правильный» способ заполнения временной таблицы? Не следует ли использовать область Pre-test
для создания временных таблиц?