![](/img/trans.png)
[英]How to test the function in service that make restTemplate post method in Spock
[英]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.