์๋ฌ ๋ฐ์ ๐จ
API ๋ฌธ์ํ ๊ณผ์ ๋ฅผ ์งํํ๋ ๋์ค ์ด์ํ ์๋ฌ๋ฅผ ๋ง๋ฌ๋ค. urlTemplate์ ์ฐพ์์ ์๋ค๋ ๋ง๊ณผ ํจ๊ป RestDocumentationRequestBuilders
๋ฅผ ์ฌ์ฉํ๋ผ๊ณ ํ๋ค.
๊ทธ๋์ ๋๋ ์๋ฌ๋ฉ์ธ์ง๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ผํ๋ค.
๋จผ์ ์ค์ ํ ์คํธ ์ฝ๋์์๋ ๋ฌธ์ ๊ฐ ์์ด๋ณด์๋ค. ๊ทธ๋์ helper ์ธํฐํ์ด์ค๋ฅผ ํ์ธํด๋ณด์๋ค.
์ ์ฝ๋๋ฅผ
์ด๋ ๊ฒ ๊ณ ์ณ์ ํ ์คํธ๋ฅผ ์คํํด๋ดค์ง๋ง ์ฌ์ ํ ๊ฐ์ ์๋ฌ๋ฉ์ธ์ง๋ฅผ ๋ฑ์ด๋๋ค.
๋ฌธ์ ํ์ ๐
์ด๋ฐ์์ผ๋ก ํด๊ฒฐํ๋๊ฒ๋ณด๋จ ์์ธ๋ถํฐ ํ์ ํ๊ณ ์ถ์๋ค.
๋จผ์ ์คํ ํ ์ฝ์์ฐฝ์ ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ, URI๊ฐ ์ธ์์ ๋๊ฒ์ผ๋ก ๋ณด์๋ค.
urlTemplate๋ฅผ ์ฐพ์ ์ ์๋ค๋๊ฒ ์ ํํ๊ฒ ์ด๋ค ๋ป์ธ์ง ๋ชฐ๋ผ ์์๋ณธ ๊ฒฐ๊ณผ, URI์์ {}
์ ์ํ๋ ๋ถ๋ถ์ด ํ
ํ๋ฆฟ์ธ๊ฒ์ผ๋ก ํ์
๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฆ,
/v11/members/{member-id}
์ด ๋ถ๋ถ์ ์ฐพ์ง ๋ชปํ๋ค๋ ์ด์ผ๊ธฐ์๋ค.
๋ถ๋ช
๊ทธ ์ ๊น์ง ์ ๋๋ก ์๋ํ์ผ๋ ๊ฐ์๊ธฐ ๋ชป์ฐพ๋๋ค๋๊ฒ ์ดํด๊ฐ ์๊ฐ ์ด์ฌํ ์์๋ณด์๋๋ RestDocumentationRequestBuilder
์ ๊ด๋ จ์ด ์์ด๋ณด์๋ค.
RestDocumentationRequestBuilder
Spring REST DOCs์์ pathParameters๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ MockMVCBuilder
๊ฐ ์๋ RestDocumentationRequestBuilder
์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋๋ ๋ณ๊ฒฝํด์ฃผ์๋๋ฐ๋ ์ค๋ฅ๊ฐ ๋๋ ์ด์ ๋ฅผ ์ ํํ๊ฒ ์ฐพ์ง๋ ๋ชปํ์ง๋ง ์์ํ๋๊ฑด ํ๋ ์๋ค.
RestDocumentationRequestBuilder ์์ ๋ค์ด๋ณด๋ ์ฌ๋ฌ ๊ธ๋ค์ด ๋ณด์์ง๋ง ๊ทธ ์ค์์ ๋์ ๋๊ฑด ์ด ๋ถ๋ถ์ด๋ค.
๋ณด๋ฉด uri๋ URL๋ก ์ธ์ํ๊ณ urlTemplate๋ฅผ ์ง์ ํด์ค์ผ template์ด๋ผ๋ ๊ฒ์ ์์๋ณธ๋ค๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
ํ์ฌ ๋ฐ์ํ ์๋ฌ๊ฐ urlTemplate์ ์ฐพ์ง ๋ชปํ๋ค๋ ์๋ฌ์ด๊ณ , ๋๋ RestDocumentationRequestBuilder์ ๋งค๊ฐ๋ณ์๋ก URIํ์ ์ uri๋ฅผ ๋ฃ์ด์ค ์ํ์๋ค.
์ฆ, ๋ด๊ฐ ์ดํดํ ๋ฐ๋ก๋
pathParameters
๋ฅผ ์ฌ์ฉํ ๋RestDocumentationRequestBuilder
๋ฅผ ์ฌ์ฉํด์ผํ์ง๋ง,RestDocumentationRequestBuilder
๋ฅผ ์ฌ์ฉํ๋ฉดpathParameters
๋ URIํ์ ์ uri์ ํ ํ๋ฆฟ์ ์ธ์ํ์ง ๋ชปํ๋ค.
๋ผ๋ ๊ฒ์ด์๊ณ ๊ทธ์ ๋ง๊ฒ ๋ค์ ๊ตฌํํด๋ณด์๋ค.
ํด๊ฒฐ..?๐ค ํด๊ฒฐ!!๐ง
1
2
3
4
5
6
7
8
9
10
11
12
13
public interface ControllerTestHelper<T> {
default RequestBuilder getRequestBuilder(String uri, long memberId) {
return RestDocumentationRequestBuilders
.get(uri, memberId)
.accept(MediaType.APPLICATION_JSON);
}
}
public interface MemberControllerTestHelper extends ControllerTestHelper {
default URI getURI(long memberId) {
return createURI( "/v11/members/{member-id}", memberId);
}
}
helper ์ธํฐํ์ด์ค์์ URI๋ฅผ String ํ์ ์ผ๋ก ์ง์ ํด์ฃผ์๊ณ , ํ ํ๋ฆฟ์ ๋ค์ด๊ฐ ๊ฐ์ ๋ฐ๋ก ํ ๋นํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ค์ ํ ์คํธ ๋ก์ง์ ์ด๋ ๊ฒ ๋ณ๊ฒฝํด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ ํ ์คํธ๋ฅผ ์คํ์์ผ๋ณธ ๊ฒฐ๊ณผ ์๋ฌ์์ด ์๋ฒฝํ๊ฒ ์คํ๋์๋ค.
์ฌ์ค ๋ด๊ฐ ์๊ฐํ๋ ์ด ์ด์ ๊ฐ ๋ง๋๊ฑด์ง ํ์ ์ด ์์ง๋ ์๋ค. ๋ ์์๋ณด๊ณ ์๊ฒ๋๋๋งํผ ๋ค์ ์ ๋ฆฌํด๋์ด์ผ๊ฒ ๋ค
+ ์์ง๋์ด๋๊ป ์ฌ์ญค๋ณด๋ ๋ง๋ค๊ณ ํ๋ค!!! ์ผํธ!!!!