Java 验证接受对象数组的方法调用
我想验证是否调用了以下方法Java 验证接受对象数组的方法调用,java,junit,mockito,spring-test,Java,Junit,Mockito,Spring Test,我想验证是否调用了以下方法 MessageSourceAccessor.getMessage(String code, Object[] args, Locale locale) 由于args数组的第10个成员等于“CHF”,我不想检查此数组的其他成员 到目前为止,我尝试了以下构造: Object [] obj = new Object[] {anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), any
MessageSourceAccessor.getMessage(String code, Object[] args, Locale locale)
由于args
数组的第10个成员等于“CHF”,我不想检查此数组的其他成员
到目前为止,我尝试了以下构造:
Object [] obj = new Object[] {anyObject(),
anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), anyObject(), "CHF", anyObject(), anyObject()};
verify(msa, times(1))
.getMessage(eq("invoice.emailBody.1"), aryEq(obj), any(Locale.class));
不幸的是,mockito抱怨在这种情况下我不能使用anyObject()。另一方面,如果我不使用它,我必须为所有数组成员提供我不想要的值。也许以前有人遇到过这个问题?如果是这样,我将非常感谢您的帮助 谢谢您可以使用捕获的参数捕获
args
参数,然后检查捕获的值以断言args
数组的第10个成员等于“CHF”。例如:
msa.getMessage(code, args, aLocale);
ArgumentCaptor<Object> captor = ArgumentCaptor.forClass(Object.class);
Mockito.verify(mock).getMessage(Mockito.anyString(), (Object[]) captor.capture(), Mockito.any(Locale.class));
List<Object> actualArgs = Arrays.asList((Object[]) captor.getValue());
Assert.assertEquals(10, actualArgs.size());
Assert.assertEquals("CHF", actualArgs.get(9));
}
msa.getMessage(代码、参数、aLocale);
ArgumentCaptor captor=ArgumentCaptor.forClass(Object.class);
Mockito.verify(mock).getMessage(Mockito.anyString(),(Object[])captor.capture(),Mockito.any(Locale.class));
List actualgs=Arrays.asList((Object[])captor.getValue();
Assert.assertEquals(10,actualArgs.size());
Assert.assertEquals(“CHF”,actualArgs.get(9));
}
您可以使用捕获参数来捕获args
参数,然后检查捕获的值以断言args
数组的第10个成员等于“CHF”。例如:
msa.getMessage(code, args, aLocale);
ArgumentCaptor<Object> captor = ArgumentCaptor.forClass(Object.class);
Mockito.verify(mock).getMessage(Mockito.anyString(), (Object[]) captor.capture(), Mockito.any(Locale.class));
List<Object> actualArgs = Arrays.asList((Object[]) captor.getValue());
Assert.assertEquals(10, actualArgs.size());
Assert.assertEquals("CHF", actualArgs.get(9));
}
msa.getMessage(代码、参数、aLocale);
ArgumentCaptor captor=ArgumentCaptor.forClass(Object.class);
Mockito.verify(mock).getMessage(Mockito.anyString(),(Object[])captor.capture(),Mockito.any(Locale.class));
List actualgs=Arrays.asList((Object[])captor.getValue();
Assert.assertEquals(10,actualArgs.size());
Assert.assertEquals(“CHF”,actualArgs.get(9));
}