0

RhinoAutoMocker を使い始めたのですが、私が直面している問題について誰かが手を差し伸べてくれるかどうか疑問に思っていました。次のコンストラクターがあります (テストしたいオブジェクトによって公開されます)。

public class MyViewModel{
   public MyViewModel(ICommand cmd1, ICommand cmd2){
   }
}

各コマンドは、異なる操作を実行する責任を持つイベントを発生させます。RhinoAutoMocker を使用する前は、さまざまなモックを作成するだけで、ビュー モデルによって実行されるアクションを制御できました。コードを RhinoAutoMocker に更新しようとすると、両方のパラメーターに同じオブジェクトを使用しようとします。これを解決する簡単な方法があると思いますが、方法がわかりません。誰か手を貸してくれませんか?

ありがとう。

4

1 に答える 1

0

スタブを設定してテスト対象のクラスにアクセスする前に、デフォルトの構成を変更することで、この問題を解決することができました。

[TestFixture]
public class BoletimViewModelApresentaDlgPdf {
    [Test]
    public void Test() {
        var geraRelatorioCmd = MockRepository.GenerateStub<ICommand>();

        var autoMocker = new RhinoAutoMocker<BoletimViewModel>();
        autoMocker.Container.Configure(
            conf => {
                conf.For<BoletimViewModel>()
                    .Use<BoletimViewModel>()
                    .Ctor<ICommand>("geraRelatorio").Is(geraRelatorioCmd);
            }
        );

        autoMocker.ClassUnderTest.GeraRelatorio
            .Raise( cmd => cmd.CommandExecuted += null,
                    autoMocker.ClassUnderTest.GeraRelatorio,
                    new CommandParameterEventArgs(new object() ));

        autoMocker.Get<IVisualizadorBoletim>()
            .AssertWasCalled( v => v.VisualizaBoletim(
                Arg<IEnumerable<DadosHorticulas>>.Is.Anything,
                Arg<DateTime>.Is.Anything,
                Arg<DateTime>.Is.Anything));

    }
}
于 2012-07-02T11:10:22.957 に答える