2010-12-08 44 views
3

私が探しているものを説明するのは難しいですが、私の例では明確にする必要があります。私は次のコードを持っているExpect.Callでオブジェクトのプロパティを設定する

:今

var schedule = ScheduleUtil.CreateScheduleDto(user, user); 
Expect.Call(() => _scheduleRepository.Save(schedule)); 

をこの保存呼び出しが行われたとき、私は何をしたい、schedule.idプロパティが別の値(例えば1)に設定する必要があります。

私はスケジュールを模擬したくありません。これはできますか? Saveメソッドは値を返さないため、可能性はありませんが、オブジェクトスケジュールを変更する必要があります。

更新:ほんの少しの例が、私が正確に望むものを明確にするでしょう。

は、メソッドの保存とクラスがあります言ってやるがいい。

ます。public void作成します(エンティティのエンティティ) {// エンティティは //entity.idがデータベースに作成したIDで更新されたデータベースに保存され }

ので、作成する前に、それを作成するには今> 0

された後entity.idは、-1で、これは作成し使用するサービスがあります。このサービスメソッドのコード規約では、呼び出される前に、id> 0(前提条件と事後条件)を持っていなければなりません。

私が必要とするのは、次のようなものです。 var entity = new Entity(); // id == -1 Expect.Call(>)_instance.Create(entity);
//ここでentity.idは0より大きい乱数でなければなりません。これは私がRhino Mock指定された整数にエンティティのIDを更新します。このことは可能ですか?

答えて

3

いいえ、あなたが_scheduleRepositoryをからかっていない場合、Rhinoのモックは、あなたが_scheduleRepositoryを模擬したくない理由。それについて知っていないのですか?

EDIT: [OK]を、今私はあなたが何をしたいのか見Rhino.Mocksが呼び出しをインターセプトしたときに実行されるように、このような何か作業をする必要があり、コードを定義するために「WhenCalled」拡張メソッドを使用します。

_scheduleRepository.Expect(s => s.Save(schedule)).WhenCalled(a => ((Schedule) a.Arguments[0]).Id = 1); 
+0

私は_scheduleRepositoryを嘲笑しています。しかし、Save(スケジュール)を呼び出すと、Rhino MocksはスケジュールのIDを変更したいと思っています。 –

+0

私は必要なものを明確にするために小さな例を追加しました。 –

+0

@Lieven "_instance"変数と "Create"メソッドを疑似できるのであれば、上記の期待値を使ってエンティティのIDを任意の値に設定することができます。なぜこれがうまくいかないのかはわかりません。 – PatrickSteele

関連する問題