2011-10-27 10 views
0

私は実際にユニットテストプレゼンターと嘲笑表示しようとするたびに、私は私が使用しての結石を持っているので、もちろん、私はこのプレゼンターのためのユニットテストを書くことはできませんあまりにも多くのデータベースの依存関係にMVPパターン:データベースの依存関係を発表者から分離するか?

public EditAccount(IAccountEditPage _view, ISession _session, IResponse _response) 
{ 

} 

public void view_SaveUser() 
{ 
    //Class that takes the view's data and persists it to DB 
} 

を実行してしまいますデータベースの依存関係が強いモデルクラスです。

は、どのように私は私のプレゼンターにデータベースに触れるすべてのクラスを注入するコンストラクタせずにデータベースへの依存を削除することが出来るのですか?私は私が持っているすべてのビューで毎回これをやりたいとは思わない。

moqを使用しています。

編集:また、私は「view_SaveUser」のコードは非常に無駄であり、そのようなデータベースに直接アクセスか何かではないことを言及する必要があります。通常は数行しかありません。私は発表者AFAIKの範囲を超えているわけではありません。

+1

データプロバイダにコンストラクタの依存関係があるのはかなり一般的です。私はMVPに精通していませんが、MVCでは、その標準的なプラクティスはIRepositoryコンストラクタパラメータを持っています。 UnityのようなDIコンテナを介してプロパティインジェクションを使用することもできます。興味深い; – jrummell

答えて

1

インスタンスをコンストラクタに挿入したくない場合は、IoCフレームワークを使用してセクタ注入を使用して、Spring.NetまたはCastle Windsorと入力して依存関係を挿入します。

これをやって、あなただけのクラスは、実際のコードのために、テストプロジェクトのために使用されているフレームワークの設定に指定する必要があり、依存関係を自動的に注入されるだろうと、あなたはコンストラクタを使用する必要がなくなります。

+0

;ありがとう。ほとんどのMVPパターンの例は簡潔であり、実際の世界の使用状況に関する情報が不足しています。 –

関連する問題