Я подозреваю, что вы неправильно понимаете, как работает издевательство.
Стандартный формат макета when(mock.method(argumentMatchers)).thenReturn(...)
. Таким образом, в вашем случае макет объекта должен быть возвращен cl.getBody()
для работы when
. Но ясно, что это не то, что произойдет, если вы не высмеяли возвращение cl.getBody()
.
На самом деле ваш myfunc
даже не прошел CallMyClass
; скорее это создает один. Так что на самом деле нет способа высмеять его возвращение.
Стандартный тестируемый формат вашего примера:
public void myfunc(CallMyClass cl) {
final byte[] response = cl.getBody().array();
...
}
@Test
void testMyFunc() {
CallMyClass cl = mock(CallMyClass.class);
ByteBuffer buf = mock(ByteBuffer.class);
when(cl.getBody()).thenReturn(buf);
when(buf.array()).thenReturn("fdafds".getBytes());
assertThat(myFunc(cl))...
}