2011-09-09 1 views
0

部分スタブについてはthis questionを見たことがありますが、私が知る必要があることはわかりません。部分スタブを使用している間にMolesのスタブクラスメソッドに割り当てる

私は(DataServiceのために、私はSDataServiceを使用している、のは言わせて)クラスのほくろのスタブを使用していた場合、そのようにはデリゲートが存在しない場合、私は、trueCallBaseプロパティを設定することができることを理解して特定のメソッドでは、基本実装のメソッドが呼び出されます。しかし、この場合、特定のメソッドにデリゲートをどのように割り当てるのですか?

これを行う方法がない場合、SIDataServiceを使用してスタブするIDataServiceというインターフェースがあるとします。デリゲートをメソッドに簡単に割り当てることができます。しかし、与えられたメソッドの代理人がない場合、対応するメソッドDataService(実装はIDataService)を呼び出す方法を教えてください。

ありがとうございました!

編集:

私はこの方法は、上記の最初のシナリオでオーバーライドする仮想にする必要があることを今参照してください。私はそれが全然意味をなさないとは思わないが、それはそうである。

したがって、2番目のシナリオに注目して、Behaviorを作成する必要がありますか? (モルズのように、なぜスタブのためのものがまだ存在しないのですか?)あるいはもっと簡単な方法がありますか?

+0

コードサンプルを提供できますか?インタネットを見ましたか?メソッドが仮想でない場合は、クラスのMInterfaceでMockを作成できます。 – Peter

+0

@peer私は当初、その方法が仮想であることが必要であるとは思わなかった。これはPexコンテキストではありません - とにかく 'MInterface'を使用できますか? – Andrew

答えて

0

代理人(迂回路)は、モルタイプと同じ方法でスタブタイプに設定されます。たとえば、SIDataService.GetMemberProfile()は次のような疑似オブジェクトを返すように設定されています。

var memberMock = new Member() { Firstname="Joe", LastName="Schmoe" }; 
var stub = new SIDataService(); 
stub.GetMemberProfileMember = i => memberMock; 
+0

ありがとうございますが、それは疑問にはあまり答えていません。私はすべてのメソッドのデリゲートを作成するのに足りない実際のオブジェクトのメソッドをデフォルトにする方法を探しています。言い換えれば、私は、デリゲートが特定のオブジェクトのメソッドを使用することを定義していない*すべてのメソッドを必要とします。 – Andrew

関連する問題