1

私はdbへの呼び出しをスタブしようとしています。基本的な考え方は、次のようなコード行です。

Person person = (from p in this.Entities.FindPerson("Smith") select p).FirstOrDefault();

db に移動せずに、オブジェクトを希望どおりに返すことができます。FindPerson(string) はストアド プロシージャを表します (念のため)。

FindPerson を上書きしようとしましたが、ObjectResult を返す必要があります。これは、パブリック コンストラクターを持たないシール クラスです。それを作成しようとするすべての試みは、db への呼び出しで終了しました。

4

1 に答える 1

2

同じ質問に対する答えを探していました。次のフォーラム スレッドは、私のためにそれをクリアしました: msdn フォーラム

基本的に、彼らは EF を直接呼び出すのではなく、ビジネス レイヤーからデータ レイヤーを抽象化することでコードをテスト可能にするように言っています。

リポジトリ パターンなどでこれを行い、依存性注入を使用してモックを注入できます。

Peli からの引用 (マイクロソフトの従業員、「Pex」プログラムに関与):

ほくろは最後の手段です。推奨される方法は、テスト可能な設計、つまりデータ層とビジネス層の間の抽象化などを使用することです...

HTH

乾杯

于 2010-08-17T14:45:49.873 に答える