0

ストアド プロシージャを呼び出すテストがあります。ストアド プロシージャは、raiserror を使用して、提供された入力を拒否することを期待しています。私の tSQLt テストの関連部分は次のとおりです。

EXEC tSQLt.ExpectException @ExpectedMessagePattern = '%複数のサブカテゴリ%';
EXEC usp_add_rfx_rfx 多くのパラメータがここに

tSQLt からのテスト結果は、usp_add_rfx_rfx sp の raiserror の重大度によって異なります。

重大度が 12 以上の場合、テストは次のメッセージで失敗します。

[test_RFX_configuration].[test_multiple_categories_and_lots] に失敗しました: (エラー) EXECUTE 後のトランザクション数は、BEGIN ステートメントと COMMIT ステートメントの数が一致していないことを示しています。前のカウント = 1、現在のカウント = 0.[16,2]{test_multiple_categories_and_lots,0} (ROLLBACK ERROR もありました --> ROLLBACK TRANSACTION 要求には対応する BEGIN TRANSACTION がありません。{Private_RunTest,149})

重大度が低い場合、テストは次のように失敗します。

[test_RFX_configuration].[test_multiple_categories_and_lots] failed: (Failure) エラーが発生することが予想されます。

私は問題をグーグルで検索し、見つけた多くのことを試しました-TRY-CATCHなどを使用しましたが、喜びはありませんでした。何か案は?

4

1 に答える 1

1

そのエラーは、テスト対象の sproc (ups_add_rfx_rfx) に独自のトランザクション処理が組み込まれているように見えます。tSQLtを使用してテストするときにスタック オーバーフロー How to ROLLBACK a transactionに関する同様の質問があります。その問題に対処するための 1 つのアプローチに関するブログ投稿を参照してください。

于 2016-06-09T13:16:37.703 に答える