如何模拟休息服务

时间:2017-09-01 09:07:03

标签: spring-boot mockito

我想知道如何为下面的代码模拟其余控制器,

public void sendData(ID id, String xmlString, Records record) throws  ValidationException{
        ClientHttpRequestFactory requestFactory = new
                HttpComponentsClientHttpRequestFactory(HttpClients.createDefault());
        RestTemplate restTemplate = new RestTemplate(requestFactory);

        List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
        messageConverters.add(new StringHttpMessageConverter(Charset.forName("UTF-8")));

        restTemplate.setMessageConverters(messageConverters);

        MultiValueMap<String,String> header = new LinkedMultiValueMap<>();
        header.add("x-api-key",api_key);
        header.add("Content-Type",content_type);
        header.add("Cache-Control",cache_control);
        HttpEntity<String> request = new HttpEntity<>(xmlString, header);

        try {
            restTemplate.postForEntity(getUri(id,record), request, String.class);
        }catch (RestClientResponseException e){
            throw new ValidationException("Error occurred while sending a file to some server "+e.getResponseBodyAsString());
        }

    }

任何建议都会有所帮助。 我试着这样做,

  @RunWith(MockitoJUnitRunner.class)
    public class Safe2RestControllerTest {
        private MockRestServiceServer server;
        private RestTemplate restTemplate;
        private restControllerClass serviceToTest;

     @Before
     public void init(){
    //some code for initialization of the parameters used in controller class
        this.server = MockRestServiceServer.bindTo(this.restTemplate).ignoreExpectOrder(true).build();
     }

      @Test
        public void testSendDataToSafe2() throws ValidationException, URISyntaxException {

        //some code here when().then()
        String responseBody = "{\n" +
                    "    \"responseMessage\": \"Validation succeeded, message 
                         accepted.\",\n" +
                    "    \"responseCode\": \"SUCCESS\",\n" +
                    "    2\"responseID\": \"627ccf4dcc1a413588e5e2bae7f47e9c::0d86869e-663a-41f0-9f4c-4c7e0b278905\"\n" +
                    "}";
        this.server.expect(MockRestRequestMatchers.requestTo(uri))
      .andRespond(MockRestResponseCreators.withSuccess(responseBody, 
       MediaType.APPLICATION_JSON));

        serviceToTest.sendDataToSafe2(id, xmlString, record);
        this.server.verify();
        }
    }

这是我正在尝试做的测试用例,但它仍然称为实际的休息api

1 个答案:

答案 0 :(得分:0)

正如@JBNizet指出的那样,你应该看看MockRestServiceServer。它允许您测试使用RestTemplate进行HTTP调用的Spring组件。

请参阅MockRestServiceServer@RestClientTest