4

私は最近、TST (tst.codeplex.com) を使用してストアド プロシージャのテストを開始しましたが、非常に便利であることがわかりました。ただし、依存関係を分離して他の SP/関数呼び出しを「モック」することができないという欠点があります (C# オブジェクトの依存関係に対して行うように、たとえば)。この機能を TST に追加したり、新しいフレームワークを作成したりするのに時間を費やすことは気にしませんが、それをどのように開始すればよいかさえわかりません。

何か案は?どんな助けでも感謝します。

PS: SP がテストを念頭に置いて設計されたことはないことは承知していますが、これは、何百もの SP が既に存在するレガシー プロジェクトにとって大きな恩恵となる可能性があります。

4

2 に答える 2

2

名前を変更するアプローチは理想からはほど遠いものの、前の回答を本当に助けますが、うまくいきます。SSDT データベース プロジェクト向けのブログ投稿でデモを行いましたが、原則は同じです。

https://tangodude.wordpress.com/2014/02/08/ssdt-database-projects-mocking-database-objects-for-isolated-unit-testing-kind-of/

ただし、tSQLt はモッキングに対して全面的に優れたサポートを提供します。

http://tsqlt.org/user-guide/isolating-dependencies/

于 2014-02-08T17:21:11.883 に答える
0

私自身も似たようなことに苦労しており、次のことがSPを嘲笑するアプローチになるのではないかと思います。

モック化された SP を必要とするテストを実行する直前に、テスト フレームワークは次のことを行う必要があります。

  • 元の SP の名前を変更します (例: HiddenSp)
  • 同じパラメータで新しい Sp を作成する
  • 新しい SP でコードを追加して、モックされた応答が必要なパラメーターの組み合わせを確認します。
  • 必要に応じてモック応答を提供する
  • また
  • リクエストを元の SP に渡す
  • テストを実行する
  • モックを削除する
  • 元の SP の名前を元に戻す

私たちは TST を使用していませんが、このようなものを (手動で作成した) SQL テスト フレームワークに追加しようと考えています。数週間は届かないので、これがうまくいくかどうか聞いてみたい.

于 2012-05-23T18:48:54.953 に答える