Это то, чего я хочу достичь.
MyClass doSomething = mock(MyClass.class);
when(doSomething.perform(firstParameter, any(Integer.class), any(File.class)))
.thenReturn(firstParameter);
По сути, я хочу, чтобы метод проверяемого класса всегда возвращал первый аргумент, который был передан в метод.
Я пытался использовать ArgumentCaptor
, вот так
ArgumentCaptor<File> inFileCaptor = ArgumentCaptor.forClass(File.class);
MyClass doSomething = mock(MyClass.class);
when(doSomething.perform(inFileCaptor.capture(), any(Integer.class), any(File.class)))
.thenReturn(firstParameter);
Но mockito
просто не удалось с этим сообщением об ошибке:
No argument value was captured!
You might have forgotten to use argument.capture() in verify()...
...or you used capture() in stubbing but stubbed method was not called.
Be aware that it is recommended to use capture() only with verify()
Examples of correct argument capturing:
ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());
Я думаю, класс ArgumentCaptor
работает только с verify
вызовами.
Так как я могу вернуть первый параметр как переданный во время теста?