У меня проблема с использованием захватчиков для проверки двух отдельных вызовов одного и того же метода, но с другим типом аргумента.
Я предоставил пример кода того, что я пытаюсь сделать здесь - в основном я хочу проверить, вызывался ли определенный метод дважды, но с аргументами другого типа, с использованием двух отдельных захватчиков, а затем вызвать некоторые утверждения для захваченных объектов..
public class Foo {
}
public class Bar {
}
public interface MyClient {
void doSomething(Object obj);
}
public class MyService {
private MyClient client;
void doSomething() {
client.doSomething(new Foo());
client.doSomething(new Bar());
}
}
@RunWith(MockitoJUnitRunner.class)
public class MyServiceTest {
@InjectMocks
private MyService testObj;
@Mock
private MyClient myClient;
@Captor
private ArgumentCaptor<Foo> fooCaptor;
@Captor
private ArgumentCaptor<Bar> barCaptor;
@Test
public void testSomething() {
testObj.doSomething();
verify(myClient).doSomething(fooCaptor.capture());
// ...do something with fooCaptor
verify(myClient).doSomething(barCaptor.capture());
// ...do something with barCaptor
}
}
Я ожидаю, что этот тест пройдет как есть, потому что захватчики указывают типы аргументов, поэтому разве это не должно работать так же, как ArgumentMatchers.any(Foo.class)
и т. Д.
В настоящее время яполучение TooManyActualInvocations - 2 вместо 1.
Как мы обрабатываем такие случаи?Мне не нравится идея использовать один захватчик, а затем использовать результаты.