1

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

4

1 に答える 1