模拟第三方api进行剩余api功能测试

时间:2018-08-16 10:21:31

标签: java unit-testing

我需要使用Rest Template测试其余终点的功能。 下面是我需要测试的虚拟休息API

@GetMapping(value = "/test")
public String getText(){
    RestTemplate restTemplate = new RestTemplate();
    String value = restTemplate.getForObject("EXTERNALURL/helloWorld",String.class);
    return value +" got the value";
}

我有下面的测试用例,它们达到了上述其余终点

private void expectFixedData() {
    MockServerClient mockServerClient = ClientAndServer.startClientAndServer("127.0.0.1",1080);
    try {
        mockServerClient.when(HttpRequest.request().withMethod("GET")
                        .withPath("/helloWorld"), Times.exactly(1))
                .respond(HttpResponse.response().withStatusCode(200)
                        .withBody("{ 'incorrect username and password combination' }")
                        .withDelay(TimeUnit.SECONDS, 1));
    }
    finally{
        mockServerClient.close();
    }
}

@Test
public void callExternalService(){
    expectFixedData();
    RestTemplate restTemplate = new RestTemplate();
    String value = restTemplate.getForObject("http://localhost:8080/test",String.class);
    Assert.assertTrue(value.equals("incorrect username and password combination got the value"));
}

但是当我运行测试用例时,它仍然调用外部URL

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

能够使用WireMock模拟对第三方的响应