Существует метод, который имеет переменные параметры:
class A {
public void setNames(String... names) {}
}
Теперь я хочу высмеять его с помощью mockito
и захватить имена, переданные ему. Но я не могу найти способ захватить любое количество пропущенных имен, я могу получить их только так:
ArgumentCaptor<String> captor1 = ArgumentCaptor.fromClass(String.class);
ArgumentCaptor<String> captor2 = ArgumentCaptor.fromClass(String.class);
A mock = Mockito.mock(A.class);
mock.setNames("Jeff", "Mike");
Mockito.verity(mock).setNames(captor1.capture(), captor2.capture());
String name1 = captor1.getValue(); // Jeff
String name2 = captor2.getValue(); // Mike
Если я передаю три имени, это не сработает, и я должен определить captor3
, чтобы записать третье имя.
Как это исправить?