そのため、データベース コネクタのテストを作成するために、データベース コネクタをスタブ化しようとしています。問題は、データベース コネクタが非常に薄い層であり、それに対するクエリがいくらか制限がないことです。コードでデータベースから変数を要求できるようにしたいのですが、コネクタはこれで問題ないはずです。この呼び出しの署名は次のようになります。
dim = getDimension(self,dimensionName,otherIndentifyingInformation)
(これはすべて MATLAB にあります。答えが言語にとらわれないか、少なくとも MATLAB では実行不可能でないことを願っています。)
コードで使用するとdimensionName
、データベースに格納される数少ないものの 1 つになります。コードがそれを呼び出し、それが存在しない場合、それは問題ありません。getDimension
ここでの問題は、次のようなを 2 回呼び出すコードをテストしたいということです。
alt = conn.getDimension('alt',otherID);
str = conn.getDimension('str',otherID);
(うまくいけば) 明らかな理由で、同じであるalt
とstr
は限りません。実際、通常はそうではありません。
それで、私の質問です。適切なテスト値を返すために getDimension をスタブ化したい場合、どうすればよいですか? getDimensionAlt
データベースから出てくる可能性のあるものの数はいくらか無制限であり、それを維持するのは面倒なので、作成は面倒に思えます。スタブ オブジェクトにロジックを配置するよりも良い方法はありますか? これは間違った方法のように思えます...
編集: testDB のセットアップが提案されました。では、テスト ケースごとに testDB をセットアップする必要はありませんか? そして、各テストで、DB 接続を作成し、それをスタブとして返し、テストを実行してから、DB 接続をクリーンアップする必要がありました。これは、特に私がテストしているシステムではない場合、各テストのオーバーヘッドが大きくなるようです。
testDB をセットアップして、毎回適切な値を入力することは可能だと思います。それは良い習慣ですか?
編集 2: おそらく私の質問は不明です。テストしようとしている小さなコードがあります。上記の 2 行ほど複雑ではないので、きれいにテストしたいと思います。問題は、getDimension
呼び出しのスタブ化が引数に依存していることです。このスタブを他のテストで再利用する必要はありません。
その答えは、「スタブに単純なロジックを入れても問題ない」かもしれないと思います。これは、MATLAB に無名クラスやスタブ フレームワークがないという事実によって完全に混乱しているため、難しいことですが、MATLAB でスタブ フレームワークを作成する前に、自分がやっていることを概念的に明確にしたいと考えています。