๐Ÿช kakaotech campus

์นดํ…Œ์ผ | [STEP2 cloncoding] 4์ฃผ์ฐจ ๊ณผ์ œ - (1)

c0zi 2023. 7. 19. 15:27

4์ฃผ์ฐจ

์นด์นด์˜ค ํ…Œํฌ ์บ ํผ์Šค 2๋‹จ๊ณ„ - BE - 4์ฃผ์ฐจ ํด๋ก  ๊ณผ์ œ

 

๊ณผ์ œ๋ช…

1. ์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

 

๊ณผ์ œ ์„ค๋ช…

1. ์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋’ค ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•˜์‹œ์˜ค.

2. stub์„ ๊ตฌํ˜„ํ•˜์‹œ์˜ค.

 

๊ณผ์ œ ์ƒ์„ธ : ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ, ์œ ๋…ํ•ด์•ผํ•  ๊ฒƒ

์ปจํŠธ๋กค๋Ÿฌ ๋‹จ์œ„ํ…Œ์ŠคํŠธ๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ๋Š”๊ฐ€?
Mockito๋ฅผ ์ด์šฉํ•˜์—ฌ stub์„ ๊ตฌํ˜„ํ•˜์˜€๋Š”๊ฐ€?
์ธ์ฆ์ด ํ•„์š”ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
200 ok๋งŒ ์ฒดํฌํ•œ ๊ฒƒ์€ ์•„๋‹Œ๊ฐ€? (ํ•ด๋‹น ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ œ์ผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ๋Š”๊ฐ€?)
๋ชจ๋“  ์š”์ฒญ๊ณผ ์‘๋‹ต์ด json์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด ์žˆ๋Š”๊ฐ€?

 



๐Ÿ“Œ ๋ฐฐ๊ฒฝ ์ง€์‹

 

Open In View ์ดํ•ด (= OSIV)

 

"Open in View" : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠธ๋žœ์žญ์…˜์„ ๋ทฐ(View)๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ์‹œ์ ๊นŒ์ง€ ์—ฐ์žฅํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ 

 

  • ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜์„ ์„œ๋น„์Šค(Service) ๋ ˆ์ด์–ด์—์„œ ์‹œ์ž‘ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต(DAO, Repository)์—์„œ ์ข…๋ฃŒ
  • ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ๋Š” @Transactional์ด ๋ถ™์€ ๋ ˆ์ด์–ด(์„œ๋น„์Šค)์—์„œ ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๊ณ , ์„œ๋น„์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ

 

์ด๊ฒƒ์€ open in view๋ฅผ false๋กœ ์„ค์ •ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. "Open in View"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘์€ ์„œ๋น„์Šค์ด๊ณ , ํŠธ๋žœ์žญ์…˜์˜ ์ข…๋ฃŒ๋„ ์„œ๋น„์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ์ด๋‹ค. ํ•˜์ง€๋งŒ DB์— selectํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ์…˜์ด view์— ๋ Œ๋”๋ง๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์ผœ๋‘๊ณ , ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์‘๋‹ตํ•˜๋Š” ์ˆœ๊ฐ„ Lazy Loading์œผ๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ์•Œ์•„๋ณด์ž

 

๋จผ์ €, OSIV = false๋กœ ์„ค์ •ํ•˜๋ฉด, open in view๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋•Œ์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์ƒ์กด ๋ฒ”์œ„๋Š” service์™€ Repository์— ํ•œ์ •๋œ๋‹ค.

 

OSIV ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ

 

๋‹ค์Œ์œผ๋กœ, OSIV ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—์„œ์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ์ƒ์กด ๋ฒ”์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

OSIV ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

 

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ž€ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋Š” ๋œป์ด๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ๊ฐ€์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ™์€ ์—ญํ• ์„ ํ•œ๋‹ค. ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

 

https://code-lab1.tistory.com/290

 

[JPA] ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ž€?

์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ž€? ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ์—”ํ‹ฐํ‹ฐ๋ฅผ ์˜๊ตฌ ์ €์žฅํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋Š” ๋œป์ด๋‹ค. ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ DB ์‚ฌ์ด์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ๊ฐ€์ƒ์˜ DB ์—ญํ• ์„ ํ•œ๋‹ค. ์—”ํ‹ฐํ‹ฐ ๋งค๋‹ˆ์ €(Entit

code-lab1.tistory.com

 


@WebMvcTest

์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ MVC ์ปจํŠธ๋กค๋Ÿฌ(Controller)๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์›น ๋ ˆ์ด์–ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

@WebMvcTest(value = {UserRestController.class})

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŠน์ • Controller๋ฅผ IoC ์ปจํ…Œ์ด๋„ˆ์— ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ์›ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ SecurityConfig ๋“ฑ๋กํ•˜์—ฌ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์ค˜์•ผ ํ•œ๋‹ค. 

 

[ํ•œ ์ค„ ์„ค๋ช…] >> ํŠน์ • ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ , ์›ํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ @WebMvcTest(value = {์ปจํŠธ๋กค๋Ÿฌ ๋ช….class}) ์™€ ๊ฐ™์ด ์ ์–ด์ฃผ์–ด SecurityConfig๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

 

* SecurityConfig : ๋ณด์•ˆ ์„ค์ • ํŒŒ์ผ