簡體   English   中英

Java - 如何測試 RestTemplate POST 方法成功狀態代碼?

[英]Java - How to test RestTemplate POST method success status code?

我正在使用 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();
}

你的方法有問題,你在這里混淆了集成測試和單元測試。 如果您只想進行單元測試,那么您可以使用@Mock 模擬 RestTemplate。 但是,如果您想驗證與某些遠程服務的集成,並且可以使用 @MockMvc 從控制器驗證這一點,請參閱此答案

您可以在測試用例中模擬以下代碼,以下是示例代碼,您可以使用 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);

        }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM