Home [Error Log] urlTemplate not found
Post
Cancel

[Error Log] urlTemplate not found

์—๋Ÿฌ ๋ฐœ์ƒ ๐Ÿšจ

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 ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ด์ฃผ์—ˆ๊ณ , ํ…œํ”Œ๋ฆฟ์— ๋“ค์–ด๊ฐˆ ๊ฐ’์„ ๋”ฐ๋กœ ํ• ๋‹นํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ํ…Œ์ŠคํŠธ ๋กœ์ง์€ ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณธ ๊ฒฐ๊ณผ ์—๋Ÿฌ์—†์ด ์™„๋ฒฝํ•˜๊ฒŒ ์‹คํ–‰๋˜์—ˆ๋‹ค.

์‚ฌ์‹ค ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ์ด ์ด์œ ๊ฐ€ ๋งž๋Š”๊ฑด์ง€ ํ™•์‹ ์ด ์žˆ์ง€๋Š” ์•Š๋‹ค. ๋” ์•Œ์•„๋ณด๊ณ  ์•Œ๊ฒŒ๋˜๋Š”๋งŒํผ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋‘์–ด์•ผ๊ฒ ๋‹ค


+ ์—”์ง€๋‹ˆ์–ด๋‹˜๊ป˜ ์—ฌ์ญค๋ณด๋‹ˆ ๋งž๋‹ค๊ณ  ํ•œ๋‹ค!!! ์•ผํ˜ธ!!!!

This post is licensed under CC BY 4.0 by the author.

[Error Log] execution failed for task ':test'

[Spring] Application Build, Run