【问题标题】:Junit for RESTTemplate ClientsRESTTemplate 客户端的 Junit
【发布时间】:2016-09-21 21:07:23
【问题描述】:

我正在尝试为一个使用 RestTemplate 的 REST Web 服务客户端编写 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 被调用时,它应该检查上述期望并返回成功并返回一些数据。

【问题讨论】:

    标签: spring rest resttemplate


    【解决方案1】:

    假设被测类有一个使用 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")));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-17
      • 2014-05-16
      • 2023-03-23
      • 1970-01-01
      • 2020-01-01
      • 2022-10-05
      • 1970-01-01
      • 2019-07-06
      • 2018-05-03
      相关资源
      最近更新 更多