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 回答