BCP を使用してファイルを作成するストアド プロシージャがあります。ファイル内のデータを、事前定義された予期される結果セットで検証する必要があります。TSQLT を使用してこれをテストする方法はありますか?
2 に答える
もう 1 つのオプションは、責任を分割することです。必要な結果を生成するための 1 つの関数またはストアド プロシージャと、最初の関数またはストアド プロシージャを呼び出してデータをエクスポートするための 2 番目の関数です。
1 つ以上のテストを記述して、GetMyData
手順が正しい結果を構築していることを検証できます。
次に、ストアド プロシージャに対してテストを記述して、次のExportMyData
ことを証明する必要があります。
a) 呼び出しGetMyData
- 「tSQLt.SpyProcedure」を使用して、エクスポート用にダミー データの 1 行を返すように構成できますが、さらに重要なのは、この sproc が実際に呼び出されたことを確認するために使用することです。
b)実際にファイルを作成します-テストの最後に次のようなことができます:
declare @tbl table (FileExists int, IsDirectory int, ParentDirectoryExists int)
insert @tbl
exec xp_fileexist 'c:\temp\greg.txt';
declare @expected int = 1;
declare @actual int = (select FileExists from @tbl)
exec tSQLt.AssertEquals @expected, @actual, 'Expected file "c:\temp\greg.txt" not found';
これで実行できない唯一のことは、の出力GetMyData
が実際に結果ファイルに書き込まれることをテストすることです。そのためには、前述のように、 を使用する必要がある場合がありますBULK INSERT
。少なくとも、私が提案するように責任を分割する場合は、より従来の方法を使用して実際の出力をBULK INSERT
テストでき、テストでは「tSQLt.SpyProcedure」によって生成された 1 つのダミー行を検証するだけで済みます。