๐ง ์ธ์ ํ ์คํธ
์์คํ ์ ์ธ์๋ฅผ ์ํด ๊ธฐ๋ฅ์ /๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์คํธํ์ฌ ๊ฐ๋ฐ์ด ์๋ฃ๋์์์ ์ฆ๋ช ํ๋ ํ ์คํธ
์ธ์ ํ ์คํธ๋ ์์ ๊ฐ์ด ์์คํ ์ ์ธ์๋ฅผ ์ํด ์์ฑํ๋ ํ ์คํธ์ ๋๋ค.
์ฆ ์ธ์ํ ์ค์ ๋ชฉ์ ์ ์ฌ์ฉ์๋ค์ด ์ํ๋ ์๋๋ฆฌ์ค๋๋ก ๊ธฐ๋ฅ์ด ์ ๋์ํ๋์ง๋ฅผ ๊ฒ์ฆํ๋ ๊ฒ์ด๋ผ ํ ์ ์์ต๋๋ค.
์ด๋ฒ ๊ธ์์๋ ์ธ์ ํ ์คํธ๋ฅผ ์์ฑํ ๋, ๊ฐ๋ ์ฑ์ ๋์ฌ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ง RestAssured ์ฝ๋ ์จ๊ธฐ๊ธฐ
์ธ์ํ ์คํธ๋ ๊ทธ ๋ชฉ์ ์ ๋ฐ๋ผ ๊ฐ๋ฐ์๊ฐ ์๋ ์ฌ๋๋ค์ด ๋ณด๋๋ผ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋์ ์ ๋ ๊ฐ๋ฐ๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์ต๋ํ ๊ฐ์ถ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐ ์ด์ ์ ๋์ด ํ ์คํธ๋ฅผ ์์ฑํ์์ต๋๋ค.
์์ ์ฝ๋์ ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ ์ฝ๋๋ ๋ ธ์ ์ ์ต์ด๋ก ์ญ์ ๋ฑ๋กํ๋ ๊ณผ์ ์ ๋ํ ํ ์คํธ์ ๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
given().contentType(JSON)
.body(new StationCreateRequest("์ถ๋ฐ์ญ"))
.when()
.post("/stations")
.then()
.extract();
given().contentType(JSON)
.body(new StationCreateRequest("์ข
์ฐฉ์ญ"))
.when()
.post("/stations")
.then()
.extract();
given().contentType(JSON)
.body(new LineCreateRequest("1ํธ์ ", 0))
.when()
.post("/lines")
.then()
.extract();
// when
ExtractableResponse<Response> response = given().log().all()
.contentType(JSON)
.body(new AddStationToLineRequest("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10))
.when()
.post("/lines/stations")
.then()
.log().all()
.extract();
// then
assertStatusCode(response, 200);
ExtractableResponse<Response> queryAllLineResponse = given().when()
.get("/lines")
.then()
.extract();
List<LineQueryResponse> list = queryAllLineResponse.jsonPath()
.getList("", LineQueryResponse.class);
assertThat(list).hasSize(1);
LineQueryResponse line = list.get(0);
assertThat(line.getLineName()).isEqualTo("1ํธ์ ");
SectionQueryResponse section = line.getStationQueryResponseList().get(0);
assertThat(section.getUpStationName()).isEqualTo("์ถ๋ฐ์ญ");
assertThat(section.getDownStationName()).isEqualTo("์ข
์ฐฉ์ญ");
assertThat(section.getDistance()).isEqualTo(10);
}
๊ธฐ์กด ์ฝ๋๊ฐ ์์ ๊ฐ์ ๋, RestAssured์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์จ๊ธฐ๋ฉด ์๋์ ๊ฐ์์ง๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
createStationRequest("์ถ๋ฐ์ญ");
createStationRequest("์ข
์ฐฉ์ญ");
createLineRequest("1ํธ์ ", 0);
// when
ExtractableResponse<Response> response = addStationToLineRequest("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10);
// then
assertStatusCode(response, 200);
ExtractableResponse<Response> queryAllLineResponse = queryAllLineRequest();
List<LineQueryResponse> list = queryAllLineResponse.jsonPath()
.getList("", LineQueryResponse.class);
assertThat(list).hasSize(1);
LineQueryResponse line = list.get(0);
assertThat(line.getLineName()).isEqualTo("1ํธ์ ");
SectionQueryResponse section = line.getStationQueryResponseList().get(0);
assertThat(section.getUpStationName()).isEqualTo("์ถ๋ฐ์ญ");
assertThat(section.getDownStationName()).isEqualTo("์ข
์ฐฉ์ญ");
assertThat(section.getDistance()).isEqualTo(10);
}
given, when ๋ถ๋ถ์ ๊ฐ๋ ์ฑ์ด ๊ฐ์ ๋์์ง๋ง, then์ ๊ฒ์ฆ๋ถ๋ ์์ง ๊ฐ๋ ์ฑ์ด ์ข๋ค๊ณ ๋๊ปด์ง์ง ์์ต๋๋ค.
์ด๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์์๊น์?
๐ usingRecursiveComparision() ์ฌ์ฉํ๊ธฐ
ํ์ฌ List์ ๋ด๋ถ ๊ฐ์๋ค ๊ฒ์ฆํ๊ธฐ ์ํด, ํ๋ํ๋ ๊ฐ๋ค์ ๊บผ๋ด์ด ์ด๋ฅผ ๋น๊ตํ๋ ์์ผ๋ก ๊ฒ์ฆ์ ์งํํ๋๋ฐ์,
์ด๋ก ์ธํด ํ ์คํธ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋ง์ด ์ ํ๋์์ต๋๋ค.
์ด๋ฅผ usingRecursiveComparision()์ ํตํด ๊ฐ์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ์กด ์ฝ๋
ExtractableResponse<Response> queryAllLineResponse = queryAllLineRequest();
List<LineQueryResponse> list = queryAllLineResponse.jsonPath()
.getList("", LineQueryResponse.class);
assertThat(list).hasSize(1);
LineQueryResponse line = list.get(0);
assertThat(line.getLineName()).isEqualTo("1ํธ์ ");
SectionQueryResponse section = line.getStationQueryResponseList().get(0);
assertThat(section.getUpStationName()).isEqualTo("์ถ๋ฐ์ญ");
assertThat(section.getDownStationName()).isEqualTo("์ข
์ฐฉ์ญ");
assertThat(section.getDistance()).isEqualTo(10);
๊ฐ์
List<LineQueryResponse> expected = List.of(
new LineQueryResponse("1ํธ์ ", 0, List.of(
new SectionQueryResponse("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)));
ExtractableResponse<Response> queryAllLineResponse = queryAllLineRequest();
List<LineQueryResponse> actual = queryAllLineResponse.jsonPath()
.getList("", LineQueryResponse.class);
assertThat(actual).usingRecursiveComparison()
.isEqualTo(expected);
usingRecursiveComparision() ๋ฅผ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด, ๋ด๋ถ ํ๋์ ๊ฐ๋ค์ ๋น๊ตํด์ฃผ๋ ๋ฉ์๋์ ๋๋ค.
์ด๋ equals()๊ฐ ์ ์๋์ง ์์ ๊ฐ์ฒด๋ค์ ๋น๊ตํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ ์์ฑ์๊ฐ๊ณผ ๊ฐ์ด, ์ ํํ๊ฒ ๋น๊ตํ ์ ์๋ ๊ฐ๋ค์ ๋ํด์๋ null์ ๋ฃ์ผ๋ฉด ๋ฌด์ํ ์ ์๋๋ก ignoringExpectedNullFields() ์ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ๋ค๋ ์ ๊ณตํ๋ ์ฐธ๊ณ ํ์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๐ TypeRef ํตํ List ๋ณํ ๊ฐ์
List<LineQueryResponse> actual = queryAllLineResponse.jsonPath()
.getList("", LineQueryResponse.class);
์ ์ฝ๋๋ ํ๋ฒ ๋ ๊ฐ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ฐ๋ก ExtractableResponse์ as()์, TypeRef ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
ExtractableResponse์ as() ๋ ์๋ต ๋ฉ์๋ ๋ฐ๋์ ๋ค์ด์๋ json ๊ฐ์ ํน์ ๊ฐ์ฒด๋ก ๋ฐ๊พธ์ด์ฃผ๋ ์ญํ ์ ์ํํ์ง๋ง, List<String>๊ณผ ๊ฐ์ด ์ ๋ค๋ฆญ ํ์ ์ ๊ฒฝ์ฐ ๋ฐํ์ ์์ ํ์ ์ด ์๊ฑฐ๋๋ฏ๋ก ์์ ํ๊ฒ ๋ณํํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ด๋ฅผ TypeRef๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋๋ฐ์, ๋ ์์ธํ ์๋ฆฌ๊ฐ ๊ถ๊ธํ๋ค๋ฉด ์ํผ ํ์ ํ ํฐ์ ๋ํด์ ์ฐพ์๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ์ฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
List<LineQueryResponse> actual = queryAllLineResponse.as(new TypeRef<>(){});
์ด๋ค์ ์ ์ฉํ์ฌ ๊ฐ์ ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
createStationRequest("์ถ๋ฐ์ญ");
createStationRequest("์ข
์ฐฉ์ญ");
createLineRequest("1ํธ์ ", 0);
// when
ExtractableResponse<Response> response = addStationToLineRequest("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10);
// then
assertStatusCode(response, 200);
List<LineQueryResponse> expected = List.of(
new LineQueryResponse("1ํธ์ ", 0, List.of(
new SectionQueryResponse("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)));
ExtractableResponse<Response> allLineQueryResponse = queryAllLineRequest();
List<LineQueryResponse> actual = allLineQueryResponse.as(new TypeRef<>(){});
assertThat(actual).usingRecursiveComparison()
.ignoringExpectedNullFields()
.isEqualTo(expected);
}
๐ ๊ฒ์ฆ๋ถ ์ฝ๋๋ ๋ฉ์๋ ์ถ์ถํ๊ธฐ
์ฝ๋์ ๊ฒ์ฆ๋ถ๋ ๋ฉ์๋๋ก ์ถ์ถํ์ฌ ๊ฐ๋ ์ฑ์ ์ฆ๊ฐ์ํฌ ์ ์์ต๋๋ค.
ํ์ฌ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
List<LineQueryResponse> expected = List.of(
new LineQueryResponse("1ํธ์ ", 0, List.of(
new SectionQueryResponse("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)));
ExtractableResponse<Response> allLineQueryResponse = queryAllLineRequest();
List<LineQueryResponse> actual = allLineQueryResponse.as(new TypeRef<>(){});
assertThat(actual).usingRecursiveComparison()
.ignoringExpectedNullFields()
.isEqualTo(expected);
์ด๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ฉ์๋๋ก ์ถ์ถํ์ฌ ๊ฐ๋ ์ฑ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
List<LineQueryResponse> expected = lineQueryResponses(
lineQueryResponse(
"1ํธ์ ", 0,
sectionQueryResponse("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)
);
ExtractableResponse<Response> allLineQueryResponse = queryAllLineRequest();
assertAllLineQueryResponse(allLineQueryResponse, expected);
์ ์ฒด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
createStationRequest("์ถ๋ฐ์ญ");
createStationRequest("์ข
์ฐฉ์ญ");
createLineRequest("1ํธ์ ", 0);
// when
ExtractableResponse<Response> response = addStationToLineRequest("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10);
// then
assertStatusCode(response, 200);
List<LineQueryResponse> expected = lineQueryResponses(
lineQueryResponse(
"1ํธ์ ", 0,
sectionQueryResponse("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)
);
ExtractableResponse<Response> allLineQueryResponse = queryAllLineRequest();
assertAllLineQueryResponse(allLineQueryResponse, expected);
}
private ExtractableResponse<Response> createStationRequest(String name) {
return given().contentType(JSON)
.body(new StationCreateRequest(name))
.when()
.post("/stations")
.then()
.extract();
}
private ExtractableResponse<Response> createLineRequest(String name, int surcharge) {
return given().contentType(JSON)
.body(new LineCreateRequest(name, surcharge))
.when()
.post("/lines")
.then()
.extract();
}
private ExtractableResponse<Response> addStationToLineRequest(
String lineName,
String upStationName,
String downStationName,
int distance
) {
return given().log().all()
.contentType(JSON)
.body(new AddStationToLineRequest(lineName, upStationName, downStationName, distance))
.when()
.post("/lines/stations")
.then()
.log().all()
.extract();
}
private void assertStatusCode(ExtractableResponse<Response> response, int code) {
assertThat(response.statusCode()).isEqualTo(code);
}
private List<LineQueryResponse> lineQueryResponses(
LineQueryResponse... lineQueryResponses
) {
return Arrays.asList(lineQueryResponses);
}
private LineQueryResponse lineQueryResponse(
String lineName,
int surcharge,
SectionQueryResponse... sectionQueryResponses
) {
return new LineQueryResponse(lineName, surcharge,
Arrays.asList(sectionQueryResponses)
);
}
private SectionQueryResponse sectionQueryResponse(
String upStationName,
String downStationName,
int distance
) {
return new SectionQueryResponse(upStationName, downStationName, distance);
}
private ExtractableResponse<Response> queryAllLineRequest() {
return given().when()
.get("/lines")
.then()
.extract();
}
private void assertAllLineQueryResponse(
ExtractableResponse<Response> allLineQueryResponse,
List<LineQueryResponse> expected
) {
List<LineQueryResponse> actual = allLineQueryResponse.as(new TypeRef<>() {});
assertThat(actual).usingRecursiveComparison()
.ignoringExpectedNullFields()
.isEqualTo(expected);
}
๐ง ํ๊ธ์ ํตํด ์ธ์ํ ์คํธ ๊ฐ๋ ์ฑ ๋์ด๊ธฐ
์ธ์ํ ์คํธ์ ๋ชฉ์ ์ ๋ฐ๋ผ, ๊ฐ๋ฐ์๊ฐ ์๋ ์ฌ๋๋ค์ด ๋ณด๋๋ผ๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ฅผ ์ํด ์์ด ๋์ ํ๊ตญ์ด ๋ฉ์๋๋ฅผ ํตํด ํ ์คํธ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ์ฆ๊ฐ์ํฌ ์ ์๋๋ฐ์, ํ๋ฒ ์ ์ฉํ๋ฉด์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
๊ธฐ์กด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์์ต๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
createStationRequest("์ถ๋ฐ์ญ");
createStationRequest("์ข
์ฐฉ์ญ");
createLineRequest("1ํธ์ ", 0);
// when
ExtractableResponse<Response> response = addStationToLineRequest("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10);
// then
assertStatusCode(response, 200);
List<LineQueryResponse> expected = lineQueryResponses(
lineQueryResponse(
"1ํธ์ ", 0,
sectionQueryResponse("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)
);
ExtractableResponse<Response> allLineQueryResponse = queryAllLineRequest();
assertAllLineQueryResponse(allLineQueryResponse, expected);
}
์ด์ ๊ฐ ๋ฉ์๋๋ค์ ํ๊ธ๋ก ๋ฐ๊พธ์ด ๋ณด๊ฒ ์ต๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
์ญ_์์ฑ_์์ฒญ("์ถ๋ฐ์ญ");
์ญ_์์ฑ_์์ฒญ("์ข
์ฐฉ์ญ");
๋
ธ์ _์์ฑ_์์ฒญ("1ํธ์ ", 0);
// when
ExtractableResponse<Response> ์ญ_์ถ๊ฐ_์๋ต = ๋
ธ์ ์_์ญ_์ถ๊ฐ_์์ฒญ("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10);
// then
์ํ_์ฝ๋_๊ฒ์ฆ(์ญ_์ถ๊ฐ_์๋ต, 200);
List<LineQueryResponse> ์์_๊ฒฐ๊ณผ = ์ ์ฒด_๋
ธ์ _์กฐํ_๊ฒฐ๊ณผ(
๋จ์ผ_๋
ธ์ _์ ๋ณด(
"1ํธ์ ", 0,
๊ตฌ๊ฐ_์ ๋ณด("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)
);
ExtractableResponse<Response> ์ ์ฒด_๋
ธ์ _์กฐํ_์๋ต = ์ ์ฒด_๋
ธ์ _์กฐํ_์์ฒญ();
์ ์ฒด_๋
ธ์ _์กฐํ_๊ฒฐ๊ณผ_๊ฒ์ฆ(์ ์ฒด_๋
ธ์ _์กฐํ_์๋ต, ์์_๊ฒฐ๊ณผ);
}
์ ๊ฐ ์์ด๋ฅผ ๋ชปํด์ ๊ทธ๋ฐ์ง, ์์ด์ ๋นํด ์ฝ๊ธฐ ์ฌ์์ง ๋๋์ด ์์ต๋๋ค.
๐ var ์ฌ์ฉํ๊ธฐ
์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ExtractableResponse<Response> ๋ผ๋ ๋ถ๋ถ์ ๋ณ๋ก ์ค์ํ์ง ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
(List<LineQueryResponse> ์ญ์ ์ธ์ ํ ์คํธ์ ๊ด์ ์์๋ ๊ทธ๋ฅ ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํ ์ ์์ต๋๋ค)
์ด๋ฅผ var ์ ํตํด ๊ฐ์ถ๋ฉด ๋ค์๊ณผ ๊ฐ์์ง๋๋ค.
@Test
void ๋
ธ์ ์_์ต์ด๋ก_์ญ์_๋ฑ๋กํ๋ค() {
// given
์ญ_์์ฑ_์์ฒญ("์ถ๋ฐ์ญ");
์ญ_์์ฑ_์์ฒญ("์ข
์ฐฉ์ญ");
๋
ธ์ _์์ฑ_์์ฒญ("1ํธ์ ", 0);
// when
var ์ญ_์ถ๊ฐ_์๋ต = ๋
ธ์ ์_์ญ_์ถ๊ฐ_์์ฒญ("1ํธ์ ", "์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10);
// then
์ํ_์ฝ๋_๊ฒ์ฆ(์ญ_์ถ๊ฐ_์๋ต, 200);
var ์์_๊ฒฐ๊ณผ = ์ ์ฒด_๋
ธ์ _์กฐํ_๊ฒฐ๊ณผ(
๋จ์ผ_๋
ธ์ _์ ๋ณด(
"1ํธ์ ", 0,
๊ตฌ๊ฐ_์ ๋ณด("์ถ๋ฐ์ญ", "์ข
์ฐฉ์ญ", 10)
)
);
var ์ ์ฒด_๋
ธ์ _์กฐํ_์๋ต = ์ ์ฒด_๋
ธ์ _์กฐํ_์์ฒญ();
์ ์ฒด_๋
ธ์ _์กฐํ_๊ฒฐ๊ณผ_๊ฒ์ฆ(์ ์ฒด_๋
ธ์ _์กฐํ_์๋ต, ์์_๊ฒฐ๊ณผ);
}
๐ ํ๋ผ๋ฏธํฐ ํ๊ธ๋ก ๋ฐ๊พธ๊ธฐ
๋ฉ์๋์ ํ๋ผ๋ฏธํฐ ์ญ์ ํ๊ธ๋ก ๋ฐ๊พธ๋ฉด ๊ฐ๋ ์ฑ์ด ํจ์ฌ ์ฆ๊ฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋์์
ํ๋ผ๋ฏธํฐ๋ฅผ ํ๊ธ๋ก ๋ฐ๊พธ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๐ง ์ฌ๋ฌ ์์ฒญ๋ค์ ์ถ์ถํ์ฌ ์ฌ์ฌ์ฉํ๊ธฐ
์ญ ์์ฑ ์์ฒญ๊ณผ, ๋ ธ์ ์์ฑ ์์ฒญ๊ณผ ๊ฐ์ ์์ฒญ๋ค์ ์ฌ๋ฌ ์ธ์ ํ ์คํธ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์ด๋ค์ ๊ฐ๊ฐ์ ์ธ์ ํ ์คํธ์์ ๊ณ์ ๋ง๋ค์ด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ฏ๋ก, ์ด๋ค์ ์ถ์ถํ์ฌ ์ฌ๋ฌ ์ธ์ ํ ์คํธ์์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ญ_์์ฑ_์์ฒญ() ์ ๊ฒฝ์ฐ StationSteps๋ผ๋ ํด๋์ค๋ก,
๋ ธ์ _์์ฑ_์์ฒญ()์ ๊ฒฝ์ฐ LineSteps๋ผ๋ ํด๋์ค๋ก ์ถ์ถํ ์ ์์ต๋๋ค.
๋ช๊ฐ์ง๋ง ์์๋ก ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public class StationSteps {
public static ExtractableResponse<Response> ์ญ_์์ฑ_์์ฒญ(final String ์ญ_์ด๋ฆ) {
return given().contentType(JSON)
.body(new StationCreateRequest(name))
.when()
.post("/stations")
.then()
.extract();;
}
}
public class LineSteps {
public static ExtractableResponse<Response> ๋
ธ์ _์์ฑ_์์ฒญ(
String ๋
ธ์ _์ด๋ฆ,
int ์ถ๊ฐ์๊ธ
) {
return given().contentType(JSON)
.body(new LineCreateRequest(๋
ธ์ _์ด๋ฆ, ์ถ๊ฐ์๊ธ))
.when()
.post("/lines")
.then()
.extract();
}
public static List<LineQueryResponse> ์ ์ฒด_๋
ธ์ _์กฐํ_๊ฒฐ๊ณผ(
LineQueryResponse... ๋
ธ์ _์ ๋ณด๋ค
) {
return Arrays.asList(๋
ธ์ _์ ๋ณด๋ค);
}
}
์ด๋ค์ ํตํด, ์ดํ ์ถ๊ฐ๋ก ์์ฑ๋๋ ๊ธฐ๋ฅ๋ค์ ๋ํด์ ์ธ์ ํ ์คํธ๋ฅผ ์์ฑํ ๋, ๊ธฐ์กด ์์ฒญ๋ค์ ์ฌ์ฌ์ฉํ์ฌ ์ํ๋ ์ํฉ์ ๋ง๋ค๊ณ ํ ์คํธํ ์ ์์ต๋๋ค.