210804 ๊ฐœ๋ฐœ๊ธฐ๋ก: nestjs ํ…Œ์ŠคํŠธ์ฝ”๋“œ

2021. 8. 4. 22:19ใ†๐Ÿ“” TIL

 

โœ…  NestJs, TypeOrm ์ด๊ฒŒ ๋งž์•„ ?

nestjs ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์‚ฌ ํ”„๋กœ๋•ํŠธ๋ฅผ ๊ฐœ๋ฐœ์ค‘์ด๋‹ค.

๋ณ‘์› ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋‹ค ๋ณด๋‹ˆ, ์–ด๋–ค ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋„ ์ตœ์†Œ 4๊ฐœ ์ด์ƒ์˜ Table ์„ ์กฐ์ธํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฌ๋‹ค ๋ณด๋‹ˆ entity ๋ฅผ ์ƒ์„ฑํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์— ๋†“์—ฌ์žˆ๋‹ค.

์ฆ‰ TypeOrm ๋„ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ์ฑ„ QueryBuilder ๋กœ ๋–ก์น ๋œ repository layer ๋ฅผ ๊ฐ–๊ฒŒ ๋๋‹ค.

์ด๋Ÿฌ๋ฉด NestJs ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ์—†์ง€ ์•Š์€๊ฐ€? ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ์ง€๋งŒ, ์–ด์ฐจํ”ผ ์ด๋Ÿฐ ์ƒํ™ฉ์ด๋ผ๋ฉด Spring์˜ JPA ๋„ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋„๊ธด๊ฐœ๊ธด์ด๋ž€ ๋œป์ด๋‹ค.

 

 

โŒ  Test code ์˜ ๋ถ€์žฌ

unit test ๋ฅผ ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋„ Entity ๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ ์ ์ด ์—ฌ์‹คํžˆ ๋“œ๋Ÿฌ๋‚ฌ๋‹ค.

querybuilder ๋ฅผ ํ†ตํ•ด db์— ์ ‘๊ทผํ•˜๋‹ˆ test code ์ž‘์„ฑ์ด ์—ฌ๊ฐ„ ํž˜๋“ค์—ˆ๋‹ค. 

unit test ๊ฐ€ ์•„๋‹Œ E2E ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ•ด์•ผํ–ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ ์ฝ”๋“œ์˜ ์ƒํ™ฉ์€, entity ๋ฅผ ์ฃผ์ž…์šฉ๋„๋กœ ๋ฐ–์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋‹ˆ, ์ด์— ๊ด€๋ จ๋œ(typeorm) ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งค ์ˆ˜ ์—†๋‹ค. ๋ฌด์—‡๋ณด๋‹ค back-end์˜ ํ˜„์žฌ ๊ธฐ๋Šฅ์ด Rest ํ†ต์‹ ์ด ์šฐ์„ ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋”๋”์šฑ E2E ํ…Œ์ŠคํŠธ์— ์ค‘์ ์„ ๋‘๋Š” ๊ฒƒ์ด ๋งž๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํšŒ์‚ฌ์—์„œ ๋”ฑํžˆ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ๋ผ๋Š” ๋ง์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—,,, ์ตœ์†Œํ•œ์˜ ๊ณต์ˆ˜๋กœ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด unit test ๋ณด๋‹จ e2e ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

์ด ๊ณผ์ •์—์„œ Jest ๋ฅผ ์•Œ๊ฒŒ ๋๋‹ค. spring์˜ mockito ์™€ ๋Š๋‚Œ์ด ๋น„์Šทํ–ˆ๋Š”๋ฐ, mock ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑด ์–ด๋Š ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๊ตญ๋ฃฐ์ด๊ตฌ๋‚˜. 

jest ๋ฅผ nestjs ์— ์ ์šฉํ•˜์—ฌ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.

 

๐ŸŒ€  ํž˜๋“  ํ•˜๋ฃจ์˜€๋‹ค

๋ถ€์„œ์— ์‚ฌ์ˆ˜๋‚˜ ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์—†๋‹ค๋ณด๋‹ˆ ๋ฌผ์–ด๋ณผ ์ƒํ™ฉ๋„ ์—ฌ์˜์น˜ ์•Š๋‹ค. literally ํ•˜๋ฃจ ์ข…์ผ ๊ตฌ๊ธ€๋งํ•˜๋ฉฐ, querybuilder ๊ด€๋ จ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ฐพ์•˜๋Š”๋ฐ, ๊ฒฐ๊ตญ ๋ฐฉํ–ฅ์ด ์ž˜๋ชป๋๋‹จ ๊ฒฐ๋ก ์ด ๋‚ฌ๋‹ค. (์–ด๋”˜๊ฐ€ ๋„์›€์„ ์ฒญํ•˜๊ณ  ์‹ถ๋‹ค ์ง„์งœ..) ๋‹ค์Œ์ฃผ๋ฉด ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์ด 5๋ช…์ด๋‚˜ ๋” ๋“ค์–ด์˜จ๋‹ค๋Š”๋ฐ, ํŒ€์˜ ์ตœ๊ณ ์ฐธ์€ ๊ฒฝ๋ ฅ์ด 10๊ฐœ์›”๋„ ์•ˆ๋œ ์ฃผ๋‹ˆ์–ด์ค‘์— ์ƒ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋‹ค.(๊ทธ๊ฒŒ ๋‚˜๋‹ค)  

๊ทธ๋Ÿผ์—๋„, ์ด ๋ถ€๋‹ด๊ฐ์„ ์ •๋ฉด์œผ๋กœ ๋งž์„œ๋ฉฐ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ„๋‹ค. ์ง€๊ธˆ ํž˜๋“ค๋‹ค๋ฉด ์ž˜ํ•˜๊ณ  ์žˆ๋Š”๊ฒƒ์ด๋ผ ๋ฏฟ๋Š”๋‹ค.