私は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 を調整するより良い方法はありますか?