Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JMock-获取对模拟方法参数的引用_Java_Unit Testing_Mocking_Jmock - Fatal编程技术网

Java JMock-获取对模拟方法参数的引用

Java JMock-获取对模拟方法参数的引用,java,unit-testing,mocking,jmock,Java,Unit Testing,Mocking,Jmock,我正在用JMock编写单元测试,我有一个模拟的void方法来更新作为参数传入的列表。不幸的是,这个列表是我正在测试的方法的内部,所以我没有引用它。是否有可能从所创建的期望中获得它?我需要能够将对象插入到列表中,以模拟模拟类的行为。另一种方法是将列表作为返回类型传递,而不是作为参数传递;这可能也是更好的做法 context.checking(new Expectations() { { // need to reference this list to insert obje

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

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

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


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

我认为您提出的替代方法(返回列表)似乎更明确、更容易理解。否则,我认为你的测试是想告诉你一些关于你的设计的东西。(也就是说,如果你需要模拟一个被模拟的类的行为,那么类之间的耦合可能比你预期的要强。)@Lilshieste这就是我最终采用的方法。谢谢你的回复。