Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 验证接受对象数组的方法调用_Java_Junit_Mockito_Spring Test - Fatal编程技术网

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));
}