์์๊ฐ ์ด๊ธ๋ ๊ฐ์ด ์๊ธด ํ์ง๋ง, ์ง๋ ๋ฒ API ํต์ ์ ์ํด Feign ์ ์ฌ์ฉํ์๋๋ฐ,
ํ
์คํธ๋ฅผ ์งํํ ๋ ์ค์ ๋ก API ์ ์์ ํ ์๋ ์์ผ๋ Mock Web ์๋ฒ๋ฅผ ๋ง๋๋ ๊ธฐ์ ์ธ WireMock ๋ฅผ ์ฌ์ฉํ ๋ด์ฉ์ ์ฌ๋ฆฌ๊ณ ์ ํ๋ค.
WireMock ์ด๋?
1. ์์กด์ฑ ์ถ๊ฐ
- Maven ์ ์ฌ์ฉํ๋ฏ๋ก pom.xml ์ ์์กด์ฑ ์ถ๊ฐ
1
2
3
4
5
6
7
|
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock-jre8</artifactId>
<version>2.24.1</version>
<scope>test</scope>
</dependency>
|
2. ํ
์คํธ ์ฝ๋ ์์ฑ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class Test {
@Rule
public WireMockRule wireMockRule = new WireMockRule(8089); // ์์ฑํ์ง ์์ ๊ฒฝ์ฐ default 8080
private BoardServiceService service;
...
@Test
public void ๋ชฉ๋ก_test() {
StubMapping accept = stubFor(
get(urlPathMatching("/board/([a-zA-Z0-9/-]*)")) // board/71 ๊ฐ์ ๊ฑธ ์ฐพ๊ธฐ ์ํด ์ ๊ทํํ์ ์ฌ์ฉ
.willReturn(aResponse()
.withStatus(200)
.withHeader("content-type", "application/json")
.withBody("Hello world!")
)
);
ApiResponse<Data> ret = service.getBoard(71); // ์๋น์ค์์ API ํธ์ถ (/board/71)
assertEquals("200", ret.getCode());
assertEquals("OK", ret.getMessage());
...
}
}
|
- Junit ์ ์ง์ํ๊ธฐ์ ์ข ํธํ๊ฒ ํ
์คํธํ ์ ์์. (5์์๋ ๊ฐ๋ฅํ ๊ฒ ๊ฐ๊ธดํ๋ฐ…)
- sample ์ ๊ฐ๋จํ๊ฒ ์์ฑํ์์ง๋ง, ์ ๊ณตํ๋ ๊ธฐ๋ฅ๋ค์ด ๋ง๋ค. (https, proxy, ์ํ์ ์ฅ ๋ฑ)
- ์ข ๋ ์์ธํ ๋ด์ฉ์ WireMock ํ์ด์ง์์ ํ์ธ ๊ฐ๋ฅ