【问题标题】:How do I assert this method call by AssertWasCalled without testing the method parameters?如何在不测试方法参数的情况下通过 AssertWasCalled 断言此方法调用?
【发布时间】:2011-09-02 14:35:09
【问题描述】:

我想检查是否调用了 LogNotInRange 方法,并且我想忽略调用它的方法参数的测试;我只是对是否调用了 LogNotInRange 感兴趣。

什么是正确的 Rhino Mocks 语法(我在下面给出了我一直在尝试的内容:)?

[TestMethod]
        public void MyTestMethod()
        {
            var logger = MockRepository.GenerateMock<ILogManager>();
            var teleporter = new Teleporter() {LogEventManager = logger};
            var message = new message() {IsDone = false};

            teleporter.Teleport(message);

            // How should I specify parameter1 and parameter2?
            logger.AssertWasCalled(t => t.LogNotInRange(parameter1, parameter2));
        }



public void LogNotInRange (object parameter1, object parameter2)
{
    // some logging logic
}

【问题讨论】:

    标签: c# .net unit-testing rhino-mocks


    【解决方案1】:

    使用Arg&lt;T&gt;.Is.Anything:

    logger.AssertWasCalled(t => t.LogNotInRange(Arg<object>.Is.Anything, 
                                                Arg<object>.Is.Anything));
    

    【讨论】:

    • 太棒了!谢谢!我很难找到关于 AssertWasCalled 的明确解释。
    【解决方案2】:

    logger.AssertWasCalled(t => t.LogNotInRange(null, null), options => options.IgnoreArguments);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多