【问题标题】:JMock - Get reference to mocked method parameterJMock - 获取对模拟方法参数的引用
【发布时间】:2014-04-25 17:05:22
【问题描述】:

我正在使用 JMock 编写单元测试,并且我有一个模拟的 void 方法来更新作为参数传入的列表。不幸的是,这个列表是我正在测试的方法内部的,所以我没有参考它。是否有可能从创建的期望中得到它?我需要能够将对象插入列表以模仿模拟类的行为。另一种方法是将列表作为返回类型而不是作为参数传递;这可能也是更好的做法。

context.checking(new Expectations() {
    {
       // need to reference this list to insert objects into
       oneOf(mockedClass).mockedMethod(with(any(List.class))); 
    }    
});

【问题讨论】:

  • 我认为您提出的替代方案(返回列表)似乎更明确且更易于理解。否则,我认为您的测试试图告诉您有关您的设计的一些信息。 (即,如果您需要模仿模拟类的行为,则可能类之间的耦合比您预期的要强。)
  • @Lilshieste 这就是我最终采用的方法。感谢您的回复。

标签: java unit-testing mocking jmock


【解决方案1】:

您可以通过custom matcher 访问该方法的输入,但它带有难闻的气味,因为您将操纵匹配器内部的结构,这不是它的目的。

更好的方法是更改​​方法的设计以返回列表,以便您可以适当地模拟它。

【讨论】:

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