Похоже, вам нужно использовать спички от Mockito.
В вашем случае 3 аргумента для restTemplate
немного сбивают с толку. Первым является значение String
, поэтому используйте anyString()
, чтобы сопоставить его, и смоделируйте somethingElse.getUrl()
, этот код отсутствует в примере, поэтому не уверен, что он делает, но он должен вернуть String
, а не быть null
. Похоже, вы хотите сопоставить любую строку для 2-го, с Mockito вам нужно использовать anyString()
или any()
, если это не String
для достижения sh. Третье - фактическое значение String.class
, поэтому снова используйте eq()
. Обратите внимание, что если какие-либо параметры равны нулю, они не будут совпадать. Кроме того, легко в конечном итоге издеваться над другой перегруженной postForEntity
, если вы не будете осторожны.
Для something.thatReturnsOAuth2RestTemplate
вы можете быть в порядке без соответствия. Если класс Props
имеет равные, и значения тестового и рабочего кодов равны. Однако, пример не показывает эту информацию, поэтому я просто добавил any(Props.class)
для этого тоже.
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
@Test
public void testExceptionCaughtWhenThrownByRestTemplate(){
PowerMockito.mockStatic(OkHttp3TemplateUtil.class);
Doc doc = new Doc.docBuilder().setSomething("");
when(something.thatReturnsOAuth2RestTemplate(any(Props.class))).thenReturn(restTemplate);
when(restTemplate.postForEntity(anyString(), any(), eq(String.class))).thenReturn(response);
}