Java - Как проверить код состояния успеха метода POST RestTemplate? - PullRequest
0 голосов
/ 23 января 2020

Я использую метод RestTemplate postForEntity для публикации в конечной точке. Если POST успешно, то возвращается status code of 201. Мне нужна помощь, чтобы написать контрольный пример для этого метода, используя Mockito. Любые предложения приветствуются. Спасибо

Вот мой код

public int postJson(Set<String> last){
    try{

        LOGGER.info("Status code " + statusCode);
    }   catch (Exception e) {
        e.printStackTrace();
    }
    return statusCode;          
}
private HttpEntity getHttpEntity() {
    return new HttpEntity<>( null, getHttpHeaders() );
}

private HttpHeaders getHttpHeaders() {
    return headersBuilder.build();
}

Ответы [ 2 ]

1 голос
/ 23 января 2020

В вашем подходе есть проблема, вы путаете интеграционное тестирование с модульным тестированием. Если вы хотите просто выполнить модульное тестирование, вы можете смоделировать RestTemplate, используя @Mock. Но если вы хотите проверить интеграцию с каким-либо удаленным сервисом, и вы можете проверить это с контроллера, используя @ Mock Mvc, обратитесь к этому answer .

0 голосов
/ 23 января 2020

Вы можете смоделировать приведенный ниже код в ваших тестовых примерах, ниже приведен пример кода, вы можете использовать методы Mockito.any или Mockito.eq для имитации объектов.

ResponseEntity<String> result = restTemplate.postForEntity(url, new HttpEntity<>( request, getHttpHeaders() ), String.class);

@RunWith(MockitoJUnitRunner.class)    
public class Test {
       @InjectMocks
    private TestController testController;

    @Mock
    private RestTemplate restTemplate;   
        public void testRest() {
        ResponseEntity<String> result = Mockito.mock(ResponseEntity.class);
        Mockito.when(restTemplate.postForEntity(Mockito.any(String.class), Mockito.eq(HttpEntity.class), Mockito.any(String.class))).thenReturn(result);

        }
        }
...