Java JMock-获取对模拟方法参数的引用
我正在用JMock编写单元测试,我有一个模拟的void方法来更新作为参数传入的列表。不幸的是,这个列表是我正在测试的方法的内部,所以我没有引用它。是否有可能从所创建的期望中获得它?我需要能够将对象插入到列表中,以模拟模拟类的行为。另一种方法是将列表作为返回类型传递,而不是作为参数传递;这可能也是更好的做法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
context.checking(new Expectations() {
{
// need to reference this list to insert objects into
oneOf(mockedClass).mockedMethod(with(any(List.class)));
}
});
您可以通过访问方法的输入,但它带有一种难闻的气味,因为您将在匹配器内部操纵结构,而这不是它的目的
更好的方法是更改返回列表的方法的设计,以便您可以适当地模拟它。我认为您提出的替代方法(返回列表)似乎更明确、更容易理解。否则,我认为你的测试是想告诉你一些关于你的设计的东西。(也就是说,如果你需要模拟一个被模拟的类的行为,那么类之间的耦合可能比你预期的要强。)@Lilshieste这就是我最终采用的方法。谢谢你的回复。