2016-09-21 126 views
2

我正在嘗試爲使用RestTemplate的一個REST Webservice客戶端編寫Junit。面向REST模板客戶端的Junit

下面是方法調用REST模板:

final ResponseEntity<LogDateVO[]> result = restTemplate.postForEntity(url, LogDateInputVO, LogDateVO[].class); 

在我的測試類我試圖像下面的一些事情:

mockServer.expect(requestTo("http://abc.def.pvt:80/testOperations/api/traffic/logs/")).andExpect(method(HttpMethod.POST)) 
    .andRespond(MockRestResponseCreators.withSuccess("{ \"id\" : \"42\", \"name\" : \"Holiday Inn\"}", MediaType.APPLICATION_JSON)); 

我無法得到結果返回,而不是能夠繼續採用這種方法,我需要一些幫助來獲得這個。

我的意圖是當我的restTemplate被調用時,它應該檢查以上期望並返回一些數據的成功。

回答

0

假設被測試的類有一個使用RestTemplate調用postForEntity的方法。欲瞭解更多信息檢查this

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import org.springframework.web.client.RestTemplate; 

@Service 
public class SimpleRestService { 
    @Autowired 
    private RestTemplate restTemplate; 

    public String getMessage() { 
     String result; 
     String httpResult = restTemplate.getForObject("http://google.com", 
       String.class); 
     result = "Message SUCCESS result: " + httpResult; 

     return result; 
    } 
} 

您的測試類應該會像如下:

@ContextConfiguration(locations = {"classpath:aap.xml"}) 
public class SimpleRestServiceFunctionalTest extends AbstractJUnit4SpringContextTests { 
    @Autowired 
    private SimpleRestService simpleRestService; 

    @Autowired 
    private RestTemplate restTemplate; 

    private MockRestServiceServer mockServer; 

    @Before 
    public void setUp() { 
     mockServer = MockRestServiceServer.createServer(restTemplate); 
    } 

    @Test 
    public void testGetMessage() { 
     mockServer.expect(requestTo("http://google.com")).andExpect(method(HttpMethod.GET)) 
       .andRespond(withSuccess("resultSuccess", MediaType.TEXT_PLAIN)); 

     String result = simpleRestService.getMessage(); 

     mockServer.verify(); 
     assertThat(result, allOf(containsString("SUCCESS"), containsString("resultSuccess"))); 
    } 

    @Test 
    public void testGetMessage_500() { 
     mockServer.expect(requestTo("http://google.com")).andExpect(method(HttpMethod.GET)) 
       .andRespond(withServerError()); 

     String result = simpleRestService.getMessage(); 

     mockServer.verify(); 
     assertThat(result, allOf(containsString("FAILED"), containsString("500"))); 
    } 

    @Test 
    public void testGetMessage_404() { 
     mockServer.expect(requestTo("http://google.com")).andExpect(method(HttpMethod.GET)) 
       .andRespond(withStatus(HttpStatus.NOT_FOUND)); 

     String result = simpleRestService.getMessage(); 

     mockServer.verify(); 
     assertThat(result, allOf(containsString("FAILED"), containsString("404"))); 
    } 
}