【问题标题】:What's the difference between LastCall and Expect.Call?LastCall 和 Expect.Call 有什么区别?
【发布时间】:2013-02-03 20:04:16
【问题描述】:

能否解释一下什么时候应该使用 Rhino Mocks LastCall 以及什么时候应该使用 Expect.Call。 我收集到 Expect.Call 只是包装器中的 LastCall。我还假设在 Rhino Mocks 中处理返回值时应该使用 Expect.Call。

【问题讨论】:

    标签: c# unit-testing tdd rhino-mocks


    【解决方案1】:
    using (mocks.Record())
    {
        myMock.AVeryMeaningFullMethodThatDoesNotReturnAValue("a to be ignored parameter");
        LastCall.IgnoreArguments();
    
        Expect.Call(myMock.AnotherMethodThatDoesReturnAValue()).IgnoreArguments().Returns("barney");
    }
    

    首先介绍一下。在Record 模式下,您可以指定“模拟”环境的行为。您可以这样做,但只需指定您期望的方法:

    myMock.AVeryMeaningFullMethodThatDoesNotReturnAValue("a to be ignored parameter");
    

    或者,您可以通过 Mocking 框架执行此操作:

    Expect.Call(myMock.Do("stuff")).Return("something");
    

    第一种情况,你不能调用Rhino mocking 框架的方法,因为mocked 方法没有返回值。 Expect.Call() 要求返回类型。为了让您作为程序员指定 Rhino 模拟行为(例如 IgnoreArguments()),他们提供了一个静态类 LastCall

    这样你仍然可以在 void 方法上使用IgnoreArguments。或者指定您希望它重复多次 (LastCall.Repeat.Any())。

    【讨论】:

    • 能否简要解释一下何时使用它们,或者它们本质上是一样的吗?
    猜你喜欢
    • 2011-08-12
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    • 2012-02-06
    • 2011-02-25
    • 2011-11-22
    • 2015-03-26
    相关资源
    最近更新 更多