-
TIL | Mar 30(Wed), 2022Developer blah blah/TIL _ WIL 2022. 3. 31. 00:18
๐TODAY
1. 07:30 ๊ธฐ์
2. ์ด๋ฒ ์คํ๋ฆฐํธ์ ์ฃผ์ task ์ค ํ๋์ธ test code ์์ฑ
3. cron ๊ด๋ จ ์ฝ๋ ์ธ์์ธ๊ณ
๐TOMORROW
1. ์ด๋ฒ์ฃผ ๊ธ์์ผ์ ํ๊ณ ๋ฐ ์ฐจ์ฃผ๋ถํฐ ์๋ก์ด ์คํ๋ฆฐํธ๊ฐ ์์๋๋ฏ๋ก ์ง๋์ฃผ๋ถํฐ ํ๋ ๊ฒ ์ ๋ฆฌํด ๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์
2. cron ์ฝ๋ ์์ง ๋ฐ ํ ์คํธ ์ฝ๋ ๋ณด์ถฉํด๋ ์ข์๋ฏ
๐จWhat I Learned?
๐
1) Jest ์ ํ ๋ฐ ์ฌ์ฉ๋ฒ(mock data/function ์ฌ์ฉ ๋ฐ ์ํฉ์ ๋ง๋ matcher ์ ์ฉ)
์ฌ๋ฌ๊ฐ์ง ์กฐ๊ฑด ๋๋ ์๋๋ฆฌ์ค๋ฅผ ์ค์ ํ๊ณ , ํด๋น ์ฝ๋๊ฐ ์คํ๋์ ๋์ ๊ฒฐ๊ณผ๊ฐ ๊ธฐ๋ํ ๊ฒฐ๊ณผ์ ๋ง๋์ง ํ์ธํ๋ฉด ํ ์คํธํ๋ฉด ๋๋ค.
๊ทธ ๊ณผ์ ์์ ํ ์คํธ์ ์กฐ๊ฑด์ด ์ฐธ/๊ฑฐ์ง, ๋จ์ ์ผ์น, ์ซ์ ๋น๊ต ๋ฑ์ด ๋ ์ ์๋๋ฐ, ์ด๋ฅผ ์ํด ์ฌ์ฉํ๋๊ฒ matcher์ด๋ค.
๊ทธ ์ค toBe(), toEqual()์ด ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฒ ๊ฐ๊ณ toBeNull()๊ณผ ๊ฐ์ด null์ด return ๋๋ ๊ฒฝ์ฐ์ ๋ํ ํ์ธ๋ ๊ฐ๋ฅํ๋ค.
ํ ์คํธ๋ฅผ ํด์ผํ๋ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ๋๋ฆ๋๋ก ์๋๋ฆฌ์ค/์ผ์ด์ค๋ฅผ ์์ฑํด ๋ณด์๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ ํ ์คํธ๋ง๋ค ์ด๋ค์์ผ๋ก ๊ตฌ์ฑํด์ผํ๋์ง(mock data ๋๋ function์ด ํ์ํ์ง, ์ด๋ค matcher๋ฅผ ์จ์ผํ๋์ง ๋ฑ) ์๊ฐํ๊ณ ํ์ตํ๋ค. ์ฌ์ค ์ฌ์ ์ ํ์ต์ ํ๋ค๊ณ ํด๋ ์ค์ ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์ง๊ณ ๋๋ ค๋ณด๋ฉด์ ๋์ค๋ ์๋ฌ๋ค์ ๊ฐ์ง๊ณ ๋ค์ ๋ฌดํ ๊ตฌ๊ธ๋ง์ ํด์ผํ๊ธฐ์, ๊ธฐ๋ณธ ์ ํ ๊ณผ ์ด๋ค์์ผ๋ก ๋์๊ฐ๋์ง๋ง ์์๋๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
Anyway,
๋ด๊ฐ ์ ํ ์ฒซ๋ฒ์งธ๋ ํ ์คํธ ์๋๋ฆฌ์ค๋ 'getSearch()๋ผ๋ ํจ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ํด๋น ํจ์๊ฐ ์ ์ด๋ 100๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผํ๋๋ฐ ์ด๋ฅผ ์ ๊ฐ์ง๊ณ ์ค๋์ง' ํ ์คํธํด์ผํ๋ค.
์ฒ์์๋ ๋ฑ 100๊ฐ๋ง ๊ฐ์ ธ์ค๋์ค ์์๋๋ฐ, ํด๋น ํจ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ api์์ ํน์ ๊ฐ์ ํ์ ์ด string๊ณผ numberํ์ ์ผ๋ก ๋์ด์์ด์ 100๊ฐ ์ด์์ด ๋์ค๋ ๊ฒฝ์ฐ๋ ์์๋ค.
๊ทธ๋์ ์ฒ์์๋ expect(data).toHaveLength(100) ๊ณผ ๊ฐ์ด 'ํด๋น ํจ์๋ฅผ ์คํ ํ์ ๋, data๊ฐ 100๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋์จ๋ค.'๋ผ๋ ์์ผ๋ก ํ๋ค๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์์ด์ ์๋์ ๊ฐ์ด ์์ ํ๋ค.
์ฌ์ค Object ํ์์ผ๋ก ์ค๋ data์ length๋ฅผ ํ ๋ฒ์ ํ์ธํ๋ matcher๊ฐ ์์ ๊ฒ ๊ฐ์์ ์ฐพ์๋ณด๋ค๊ฐ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒ์ฆํ ์ฝ๋๊ฐ ์์ด์ ๊ฐ์ ธ์๋ค.
=> ๋ฐฐ์ด์ ํ๋ ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ data๋ฅผ ๋ฃ์ด์ฃผ๊ณ expect ๋ถ๋ถ์์ length๋ก ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฝ๊ณ ๊ฐ๋จํ๋๋ฐ, matcher์๋ง ๊ฝํ์ ๋ค๋ฅธ ๊ณณ์ ๋๋ฌ๋ณด์ง ๋ชปํ๋ค :(
https://www.newthings.co/blog/structuring-tests-using-given-when-then/
describe('GIVEN an empty array', () => { const array = new CustomArray(); describe('WHEN an item is pushed', () => { array.push("item"); // ๋ฐฐ์ด์ ๋ด์ test('THEN the length of the array is one', () => { expect(array.length).toBe(1); }); }); });
์๋ ์ฌ์ดํธ์์ ๊ตญ๋ฌธ์ผ๋ก ์ผ๋ถ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ค.
https://mulder21c.github.io/jest/docs/en/next/using-matchers
์๋ ์ฌ์ดํธ๋ ์๋ฌธ์ผ๋ก ์์ฑ๋ ๊ณต์๋ฌธ์์ด๋ค.
https://jestjs.io/docs/expect#tohavereturned
2) ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ์์ฑ: writable, enumerable, configurable + value
์ด ๋ถ๋ถ์ MDN ๋ฌธ์๋ฅผ ๋ณด๋ค๊ฐ 'use strict'์ object.defindProperty(), writable ์ด ๋์์ ๋ฐ๋ก ํฌ์คํ ํ๋ ค๊ณ ๋นผ๋๋ค.
๋ธ๋ก๊ทธ ๊ธ์ ๋ณด๋ฉด์ console.log ๋ก ๋ช๊ฐ ํ ์คํธ๋ง ํด๋ดค๋ค.
https://im-developer.tistory.com/140
https://developer-talk.tistory.com/277
๐งโ๏ธReivew
์ง์ง ์ ์ ์์ด ์ฒซ๋ฒ์งธ ์คํ๋ฆฐํธ๊ฐ ์ง๋๊ฐ๋ค. ์ ์ฌ ๋น์ผ์ ์ฃผ์ด์ง ์ ๋ฌด ๊ฒธ ๊ณผ์ ๊ฐ (๋ํํ ๋)์ด๋ ค์์ ์ข์ ํ์๋๋ฐ, ์ด๋ฒ ์คํ๋ฆฐํธ ๋ ์ธ์์ธ๊ณ ๋ฐ์ ์ฝ๋๋ ๊ณ์ ๋ณด๋ค ๋ณด๋๊น ๋์ ์ต์ ๊ฒ ๊ฐ๋ค. ๋ฟ๋ง ์๋๋ผ ํด๊ทผํ๊ณ ๋ ์ง์์ 2-3์๊ฐ์ฉ ๋ณด๊ณ ... ๊ฑฐ์ ํ๋ฃจ์ข ์ผ ๋ณด๋๊น ์ต์ํด์ ธ์ผ์ง ๋ญ..
์ด๋์ ์ด๋ฐ ๋๊ธ์ ๋ดค๋ค. -> '์ ์ ์ด 120% ํ๋ ค๋ ๊ฒ ๋งํผ ๋ฌด์์ด ์ผ์ด ์๋ค'๋ผ๊ณ
์๊ฐ์ด ์ง๋ ์๋ก ๋ชจ๋ฅด๋๊ฒ ๋๋ฌด ๋ง์์ ์ด๋์๋ถํฐ ์์ํด์ผํ ์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค. ์ฌ์ค ๊ณ์ ๋ญ๊ฐ๋ฅผ ํ๊ณ ์๊ธฐ๋ ํ๋๋ฐ ๋ง์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ํด์๋ ๋ชจ๋ฅด๋๊ฒ ๋ง์๊ณ , ํ์ ์คํฌ๋ฆฝํธ + ์ฒ์ํด๋ณด๋ Nest.js๋ ์์ง์ ๋ฏ์ค๊ณ (๊ทธ๋๋ ์คํ๋ง ํด๋ด์ ์ฌ๊ธ ์ต์), ๋ฐ๋ฌผ๊ด์ ๊ธฐ์ฆ๋์ด์ผํ๋ 2012๋ ๋งฅ๋ถ์ผ๋ก๋ ์ธํฐ๋ท ์ํํ๋๋ผ ์๋์ฐ ๋ฉํ์ผ๋ก ๊ฐ๋ฐ์ ํ๊ธฐ์ macOS๋ก ๊ฐ๋ฐํ๋ ๊ฒ๋ ์์ง ๋ฏ๊ฐ๋ฆผ.
๋คํธ์ํฌ, ๋ฆฌ๋ ์ค ํ๊ฒฝ, ์น ๋ธ๋ผ์ฐ์ , ๋ช ๋ น์ด๋ก ๋ฒ์ ๊ด๋ฆฌ(git), ํ ์คํธ ์ฝ๋์ง๊ธฐ, DB ๋ฑ ๊ณต๋ถํ ๊ฑฐ ๋ง์์ ์ ๋ง ์ข๋ค.
๋คํธ์ํฌ๋ ๋ฆฌ๋ ์ค ๊ด๋ จํด์ ๋ ์ค ํ๋๋ ์ฃผ๋ง์ ํ์ ๋ค๋๋ฉฐ ๋ฐฐ์ธ ์๊ฐ์ธ๋ฐ, makmakํ๋ค :/)
์ค๋๋ก์ ๋ฑ 2์ฃผ๋๋๋ฐ, ๊ทธ๋๋ ์ด์ ๋ ์๋ก์ด ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ๋ฑ ์ ์ ์๊ฒ ๋์๋ค!
'Developer blah blah > TIL _ WIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
WIL | Apr 4 - Apr 10, 2022 (0) 2022.04.10 WIL | Mar 28 - Apr 3, 2022 (0) 2022.04.03 WIL | Mar 21- 27, 2022 (0) 2022.03.28 TIL | Mar 23(WED), 2022 (0) 2022.03.24 TIL | Mar 21(MON), 2022 (0) 2022.03.22