0

BCP を使用してファイルを作成するストアド プロシージャがあります。ファイル内のデータを、事前定義された予期される結果セットで検証する必要があります。TSQLT を使用してこれをテストする方法はありますか?

4

2 に答える 2

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 つのダミー行を検証するだけで済みます。

于 2014-10-01T20:24:31.693 に答える