問題タブ [tsqlt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - tSQLt faketable にデータを挿入する最良の方法は?
私はtSQLtデータベースユニットテストフレームワークにまったく慣れていません。3 つのテーブルを使用するストアド プロシージャがあります。各テーブルには 15 行のデータが必要です。結果を検証するために、別の偽のテーブルも必要です。しかし、偽のテーブルを準備するために INSERT を使用するのはエラーが発生しやすく、保守が困難です。
tSQLt faketable 用にデータを準備するためのベスト プラクティスは何ですか?
ありがとう。
sql-server - tSQLt: セットアップとテストの間でデータを共有する
tSQLt を使用して、t-sql コードの単体テストを行っています。
多くの場合、テストの配置部分は非常に広範囲に及ぶため、クラス内のテスト間で再利用するために、その多くを SetUp プロシージャにプッシュしようとしています。
セットアップ手順とテスト手順が同じ情報を「認識」できれば、つまり共有データがあれば非常に便利です。たとえば、セットアップでテスト請求書を作成し、請求書 ID を既知のものに設定するとします。
そして、テストでは、次のように、テスト請求書に対して何かを行いたいと考えています。
@TestId の値を SetUp プロシージャの「クラス変数」にプッシュするだけで、両方 (およびそれ以上) のプロシージャで重複する値を置き換えて、テストから使用できると便利です。コンパクトな方法でそれを達成する方法はありますか? [InvoiceManager] スキーマでテーブルを作成し、テストでそれを読み取ることを想像できます。ドキュメントで見つからないだけで、このようなものが存在する可能性はありますか?ありがとう!
sql - StoredProcedure で RaiseError をモック/偽造するにはどうすればよいですか
これは私の最初の日tsqlt
なので、あいまいな発言が予想されます.
テストTry Catch Block
の実際のステートメントはinsertおよびupdateコマンドです。
ここで、ErrorRaised があった場合に catch ブロックが期待されるタスクを実行するかどうかをテストしたいと思います。
内部でモック/偽造するものが何もないテストでストアドプロシージャからエラーを発生させる方法を教えてください。
私の質問が理解できることを願っています。必要に応じて明確にしてください。
sql - ROLLBACK ERROR と tSQLt.ExpectException もありました
シナリオは次のとおりです。
- ストアド プロシージャsproc_aがsproc_bを呼び出します。次にsproc_bがsproc_cを呼び出します。典型的なネストされたプロシージャ。
- Sproc_a が SET XACT_ABORT ON を実行しました。名前付きトランザクションを使用します。
- Sproc_c でエラーが発生しました。
- tSQLt.ExpectException はエラーを確認できませんでした。テストは成功するはずですが、失敗しました。
以下は、シナリオを再現するためのコードです。
SET XACT_ABORT ON を削除すると、単体テストは成功しますが、エラーが発生します。Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
これはバグレポートのようなものです。おそらく問題は、それを修正する方法についてアイデアを持っている人は誰ですか? :)
tsqlt - TSQLT の AssertResultSetsHaveSameMetaData
TSQLT AssertResultSetsHaveSameMetaData を使用して 2 つのテーブル間のメタデータを比較しています。しかし問題は、実行時にテーブル名をパラメーターとして渡しているため、テーブル名をハードコーディングできないことです。
sql - tSQLt 単体テストで SQL ヒントを使用してワークアウトするにはどうすればよいですか?
tSQLt を使用して、データベース内のストアド プロシージャの 1 つの単体テストを作成しようとしていて、1 つの問題に直面しています。
このクエリで定義されたヒントのため、クエリ プロセッサはクエリ プランを作成できませんでした。ヒントを指定せず、SET FORCEPLAN.[16,1]{spPlaceNewOrder,56} を使用せずにクエリを再送信します (ROLLBACK ERROR も発生しました --> 現在のトランザクションをコミットできず、セーブポイントにロールバックできません。ロールバックします。トランザクション全体。{Private_RunTest,161})
誰かがこれについて私を助けてくれますか?
tsqlt - tSQLt を使用してメモリ最適化テーブルをテストするにはどうすればよいですか?
現在、tSQLtを使用してストアド プロシージャを単体テストしようとすると、テストがメモリ最適化テーブルに触れると、次のエラーが表示されます。
tSQLtを使用したメモリ内テーブルの使用法、またはこの問題を回避する方法を示すドキュメントが wiki またはオンラインの他の場所に見つかりません。
何か考えや提案はありますか?