1

私は Rhino モックをいじっていて、モック オブジェクトにダミーの結果を設定しようとしているので、ファクトリ メソッドで呼び出されたときにデータについて心配する必要はありません。

しかし、問題が発生しました。ダミーの結果を取得したいメソッドは、virtualではないため、例外を引き起こしています。

私はこのようなコードを持っています:

using(mock.Record()){
  SetupResult.For(service.SomeMethod()).Return("hello world");
}

SomeMethodメソッドは、モックされた結果を得るために仮想である必要がありますか?

SetupResult.Forまた、との違いは何Expect.Callですか?

4

1 に答える 1

4

Rhino Mocks は DynamicProxy2 を使用して魔法を実行するため、非仮想メソッドで期待/結果を設定することはできません。

と の違いについてはSetupResult.ForExpect.Callメソッドが呼び出されない場合にテストを検証に失敗させたい場合は、 を使用しますExpect.Call。モック オブジェクトから結果を提供したいだけで、呼び出されなかった場合に検証を失敗させたくない場合は、次を使用します。SetupResult.For

したがって、以下は失敗します。

using(mock.Record()){
    Expect.Call(service.SomeMethod()).Return("you have to run me");
}

using(mock.Replay()){
    // Some code that never calls service.SomeMethod()
}

そして、このテストはしません:

using(mock.Record()){
    SetupResult.For(service.SomeMethod()).Return("you don't have to run me");
}

using(mock.Replay()) {
    // Some code that never calls service.SomeMethod()
}

それは理にかなっていますか?

于 2008-12-05T05:57:06.820 に答える