4

私は、Rhino Mocks の新しい AAA 構文を使用しています (そして気に入っています)。ただし、次のようにスタブとモックを作成する必要があることに困惑しています。

var v1 = MockRepository.GenerateStub<MyClass>();

インスタンス化された MockRepository の代わりに:

var mr = new MockRepository();
var v1 = mr.GenerateStub<MyClass>();

この構文により、単体テストの移行が容易になります。

Ayende の wiki を読むと、2 番目の構文が機能するように見えますが、正しく機能させることができません。そのようにすると、記録/再生ブロックを使用する必要があります。また、静的メソッドなしで新しい構文を使用している例をオンラインで見つけることもできません。

私の質問は、静的メソッドを使用せずに、また記録/再生に頼ることなく、AAA 構文を機能させることができた人はいますか? もしそうなら、私は何が欠けていますか?

4

1 に答える 1

4

リフレクター付きのサイモックをチェックしました。

MockRepository.GenerateStubは実際にリポジトリを作成し、非静的スタブを呼び出します。静的メソッドが実際に行うことは次のとおりです(リフレクターからコピー)

public static object GenerateStub(Type type, params object[] argumentsForConstructor)
{
    MockRepository repository = new MockRepository();
    object obj2 = repository.Stub(type, argumentsForConstructor);
    repository.Replay(obj2);
    return obj2;
}

コードにRepository.Replayの呼び出しがないようです。

于 2008-12-23T13:11:05.697 に答える