[java] Java Jersey에서 테스트 환경에서 외부 API 호출을 가짜로 대체하는 방법은?
- Mocking Framework 사용: Mockito와 같은 Mocking Framework를 사용하여 외부 API 호출을 가짜로 대체할 수 있습니다. 이를 사용하면 실제 API 호출을 대신하여 원하는 결과를 반환하도록 설정할 수 있습니다. 예를 들어, 호출에 대해 성공 또는 실패 응답을 제공하거나 반환되는 데이터를 조작할 수 있습니다.
import static org.mockito.Mockito.*;
public class MyTest {
@Test
public void testApiCall() {
MyService myService = new MyService();
ExternalApi mockApi = mock(ExternalApi.class);
when(mockApi.getData()).thenReturn("Mocked data");
myService.setExternalApi(mockApi);
String result = myService.doApiCall();
assertEquals("Mocked data", result);
}
}
- Mock 서버 구축: 테스트 환경에서 HTTP 요청에 대해 가짜로 응답을 제공하는 Mock 서버를 구축할 수 있습니다. WireMock이나 MockServer와 같은 도구를 사용하여 실제 API와 유사한 엔드포인트를 생성하고, 요청에 대해 사전에 정의된 응답을 반환하도록 설정할 수 있습니다.
import com.github.tomakehurst.wiremock.WireMockServer;
import static com.github.tomakehurst.wiremock.client.WireMock.*;
public class MyTest {
private WireMockServer wireMockServer;
@Before
public void setup() {
wireMockServer = new WireMockServer();
wireMockServer.start();
configureFor("localhost", wireMockServer.port());
}
@After
public void tearDown() {
wireMockServer.stop();
}
@Test
public void testApiCall() {
MyService myService = new MyService();
myService.setApiEndpoint("http://localhost:" + wireMockServer.port() + "/api");
stubFor(get(urlEqualTo("/api"))
.willReturn(aResponse()
.withStatus(200)
.withBody("Mocked data")));
String result = myService.doApiCall();
assertEquals("Mocked data", result);
}
}
이러한 방법을 사용하여 Java Jersey에서 테스트 환경에서 외부 API 호출을 가짜로 대체할 수 있습니다. 이를 통해 테스트 전략을 개발하고 외부 의존성에 구애받지 않고 효과적인 테스트를 수행할 수 있습니다.