@@ -9,45 +9,45 @@ prev: testing-recipes.html
9
9
10
10
์ด ๋ฌธ์๋ ํ๊ฒฝ์ ์ํฅ์ ์ค ์ ์๋ ์์์ ์ผ๋ถ ์๋๋ฆฌ์ค์ ๋ํ ๊ถ์ฅ ์ฌํญ์ ์ดํด๋ด
๋๋ค.
11
11
12
- ### ํ
์คํธ {#test-runners}
12
+ ### ํ
์คํธ ๋ฌ๋ {#test-runners}
13
13
14
14
[ Jest] ( https://jestjs.io/ ) , [ Mocha] ( https://mochajs.org/ ) , [ ava] ( https://github.com/avajs/ava ) ์ ๊ฐ์ ํ
์คํธ ๋ฌ๋๋ ํ
์คํธ ์ค์ํธ๋ฅผ ์ผ๋ฐ ์๋ฐ ์คํฌ๋ฆฝํธ๋ก ์์ฑํ๊ณ , ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์คํํ ์ ์๋๋ก ํฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก, ํ
์คํธ ์ค์ํธ๋ ์ง์์ ํตํฉ์ ์ผ๋ถ๋ก ์คํ๋ฉ๋๋ค.
15
15
16
- Jest๋ ๋ชจ์ [ ๋ชจ๋] ( #mocking-modules ) ๋ฐ [ ํ์ด๋จธ] ( #mocking-timers ) , ๊ทธ๋ฆฌ๊ณ [ jsdom] ( #mocking-a-rendering-surface ) ์ง์ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ง์ํ๋ React ํ๋ก์ ํธ์ ๊ด๋ฒ์ํ๊ฒ ํธํ๋ฉ๋๋ค. ** React ์ฑ์ ๋ง๋ค ๋, Jest๋ ์ด๋ฏธ ์ ์ฉํ ๋๊ตฌ๋ก [ ์์์ ํฌํจ๋์ด ์์ต๋๋ค.] ( https://create-react-app.dev/docs/running-tests/ ) **
17
- [ mocha] ( https://mochajs.org/#running-mocha-in-the-browser ) ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ค์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ ์ ์๋ํ๋ฉฐ, ์ด๋ ๋ถ๋ช
ํ ํ์ํ ํ
์คํธ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
18
- ์๋ ํฌ ์๋ ํ
์คํธ๋ ์ฌ๋ฌ ํ์ด์ง์ ๊ฑธ์น ๊ธด ํ๋ฆ์ ํ
์คํธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, [ ๋ค๋ฅธ ์ค์ ] ( #end-to-end-tests-aka-e2e-tests ) ์ด ํ์ํฉ๋๋ค.
16
+ - Jest๋ ๋ชจ์ [ ๋ชจ๋] ( #mocking-modules ) ๋ฐ [ ํ์ด๋จธ] ( #mocking-timers ) , ๊ทธ๋ฆฌ๊ณ [ jsdom] ( #mocking-a-rendering-surface ) ์ง์ ๋ฑ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ง์ํ๋ React ํ๋ก์ ํธ์ ๊ด๋ฒ์ํ๊ฒ ํธํ๋ฉ๋๋ค. ** Create React App์ ์ฌ์ฉํ๋ค๋ฉด, [ Jest๋ ์ด๋ฏธ ์ ์ฉํ ๊ธฐ๋ณธ๊ฐ๊ณผ ํจ๊ป ํฌํจ๋์ด ์์ต๋๋ค.] ( https://create-react-app.dev/docs/running-tests/ ) **
17
+ - [ mocha] ( https://mochajs.org/#running-mocha-in-the-browser ) ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค์ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ ์ ์๋ํ๋ฉฐ, ์ด๋ ๋ถ๋ช
ํ ํ์ํ ํ
์คํธ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
18
+ - ์๋ ํฌ ์๋ ํ
์คํธ๋ ์ฌ๋ฌ ํ์ด์ง์ ๊ฑธ์น ๊ธด ํ๋ฆ์ ํ
์คํธํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, [ ๋ค๋ฅธ ์ค์ ] ( #end-to-end-tests-aka-e2e-tests ) ์ด ํ์ํฉ๋๋ค.
19
19
20
- ### ๋ ๋๋ง ํ๋ฉด์ ๋ํ ๋ชจ์ {#mocking-a-rendering-surface}
20
+ ### ๋ ๋๋ง ํ๋ฉด์ ๋ํ ๋ชจ์ํ๊ธฐ {#mocking-a-rendering-surface}
21
21
22
22
ํ
์คํธ๋ ์ข
์ข
๋ธ๋ผ์ฐ์ ์ ๊ฐ์ ์ค์ ๋ ๋๋ง ํ๋ฉด์ ์ ๊ทผํ์ง ์์ ํ๊ฒฝ์์๋ ์งํ๋ฉ๋๋ค. ์ด๋ฐ ํ๊ฒฝ์์๋, Node.js ๋ด์์ ์คํ๋๋ ๊ฐ๋ฒผ์ด ๋ธ๋ผ์ฐ์ ์ธ [ jsdom] ( https://github.com/jsdom/jsdom ) ์ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ฎฌ๋ ์ด์
ํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
23
23
24
24
๋์ฒด๋ก, jsdom์ ์ผ๋ฐ ๋ธ๋ผ์ฐ์ ์ฒ๋ผ ๋์ํ์ง๋ง [ ๋ ์ด์์์ด๋ ํ์] ( https://github.com/jsdom/jsdom#unimplemented-parts-of-the-web-platform ) ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค. ์ด๋ ์ฌ์ ํ ๋๋ถ๋ถ์ ์น ๊ธฐ๋ฐ ์ปดํฌ๋ํธ ํ
์คํธ์ ์ ์ฉํฉ๋๋ค. ์๋ํ๋ฉด ํ
์คํธ๋ฅผ ์ํด ๋ธ๋ผ์ฐ์ ๋ฅผ ์์ํ๋ ๊ฒ๋ณด๋ค ๋นจ๋ฆฌ ์คํ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ํ ํ
์คํธ์ ๋์ผํ ํ๋ก์ธ์ค์์ ์คํ๋๋ฏ๋ก, ๋ ๋๋ง๋ DOM์ ๊ฒํ ํ๊ณ ๊ฒ์ฆํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
25
25
26
- ์ค์ ๋ธ๋ผ์ฐ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก, jsdom์ ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ชจ๋ธ๋งํ ์ ์๋๋ก ํฉ๋๋ค. ํ
์คํธ๋ DOM ๋
ธ๋์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์กํ ๋ค์ ์ด๋ฌํ ๋์์ ๋ถ์์ฉ์ ๊ด์ฐฐํ๊ณ ๊ฒ์ฆํ ์ ์์ต๋๋ค. [ (์์)] ( /docs/testing-recipes.html#events )
26
+ ์ค์ ๋ธ๋ผ์ฐ์ ์ ๋ง์ฐฌ๊ฐ์ง๋ก, jsdom์ ์ฌ์ฉ์ ์ํธ์์ฉ์ ๋ชจ๋ธ๋งํ ์ ์๋๋ก ํฉ๋๋ค. ํ
์คํธ๋ DOM ๋
ธ๋์์ ์ด๋ฒคํธ๋ฅผ ๋ฐ์กํ ๋ค์ ์ด๋ฌํ ๋์์ ๋ถ์์ฉ์ ๊ด์ฐฐํ๊ณ ๊ฒ์ฆํ ์ ์์ต๋๋ค. [ < small > (์์)</ small > ] ( /docs/testing-recipes.html#events )
27
27
28
- UI ํ
์คํธ์ ๋ง์ ๋ถ๋ถ์ ์์ ์ค์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. jsdom์๊ฒ ๋ ๋๋งํ๋ ํ
์คํธ ๋ฌ๋๋ก์, ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ ์ํ์ค๋ก ์ง์ ๋ ์ฌ์ฉ์ ์ํธ์์ฉ๊ณผ ํจ๊ปJest๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ act() ๋์ฐ๋ฏธ์ ์ํด ์๋๋ฉ๋๋ค.[ (์์)] ( /docs/testing-recipes.html ) ์๋ฅผ ๋ค์ด, ๋ง์ React ์์ฒด ํ
์คํธ๋ ์ด๋ฐ ์กฐํฉ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
28
+ UI ํ
์คํธ์ ๋ง์ ๋ถ๋ถ์ ์์ ์ค์ ์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค. jsdom์๊ฒ ๋ ๋๋งํ๋ ํ
์คํธ ๋ฌ๋๋ก์, ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ ์ํ์ค๋ก ์ง์ ๋ ์ฌ์ฉ์ ์ํธ์์ฉ๊ณผ ํจ๊ปJest๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ` act() ` ๋์ฐ๋ฏธ์ ์ํด ์๋๋ฉ๋๋ค.[ < small > (์์)</ small > ] ( /docs/testing-recipes.html ) ์๋ฅผ ๋ค์ด, ๋ง์ React ์์ฒด ํ
์คํธ๋ ์ด๋ฐ ์กฐํฉ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
29
29
30
30
๋ง์ฝ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ณ ๋์์ ํ
์คํธํ๊ณ ๋ ์ด์์์ด๋ ์ค์ ์
๋ ฅ๊ณผ ๊ฐ์ ๋ค์ดํฐ๋ธ ๋ธ๋ผ์ฐ์ ๋์์ ์๊ตฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ [ mocha] ( https://mochajs.org/ ) ์ ๊ฐ์ ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
31
31
32
- DOM์ ์๋ฎฌ๋ ์ด์
* ํ ์ ์๋* ํ๊ฒฝ์์ (์๋ฅผ ๋ค๋ฉด, Node.js์์ React Native ์ปดํฌ๋ํธ ํ
์คํธ), ์๋ฆฌ๋จผํธ์์ ์ํธ์์ฉ์ ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ํด [ event simulation helpers ] ( /docs/test-utils.html#simulate ) ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋์์ผ๋ก, [ ` @testing-library/react-native ` ] ( https://testing-library.com/docs/native-testing-library ) ์ ` fireEvent ` ํฌํผ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
32
+ DOM์ ์๋ฎฌ๋ ์ด์
* ํ ์ ์๋* ํ๊ฒฝ์์ (์๋ฅผ ๋ค๋ฉด, Node.js์์ React Native ์ปดํฌ๋ํธ ํ
์คํธ), ์๋ฆฌ๋จผํธ์์ ์ํธ์์ฉ์ ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ํด [ ์ด๋ฒคํธ ์๋ฎฌ๋ ์ด์
ํฌํผ ] ( /docs/test-utils.html#simulate ) ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋์์ผ๋ก, [ ` @testing-library/react-native ` ] ( https://testing-library.com/docs/native-testing-library ) ์ ` fireEvent ` ํฌํผ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
33
33
34
34
[ Cypress] ( https://www.cypress.io/ ) , [ puppeteer] ( https://github.com/GoogleChrome/puppeteer ) , [ webdriver] ( https://www.seleniumhq.org/projects/webdriver/ ) ๊ฐ์ ํ๋ ์์ํฌ๋ค์ [ end-to-end ํ
์คํธ] ( #end-to-end-tests-aka-e2e-tests ) ๋ฅผ ์งํํ๊ธฐ์ ์ ์ฉํฉ๋๋ค.
35
35
36
- ### ๋ชจ์ ํจ์ {#mocking-functions}
36
+ ### ํจ์ ๋ชจ์ํ๊ธฐ {#mocking-functions}
37
37
38
38
ํ
์คํธ๋ฅผ ์์ฑํ ๋, ์ฐ๋ฆฌ๋ ํ
์คํธ ํ๊ฒฝ ๋ด๋ถ์์ ๋๋ฑ์ฑ์ด ์๋ ์ฐ๋ฆฌ์ ์ฝ๋ ์ค ์ผ๋ถ๋ฅผ ๋ชฉ์์ํ๊ณ ์ถ์ดํฉ๋๋ค(์๋ฅผ ๋ค์ด, ` navigator.onLine ` ์ํ๋ฅผ Node.js ๋ด๋ถ์์ ํ์ธํ๋ ๊ฒ์ฒ๋ผ). ํ
์คํธ๋ ๋ํ ์ผ๋ถ ํจ์๋ฅผ ๊ฐ์ํ ์ ์์ผ๋ฉฐ ํ
์คํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ด ํจ์๋ค๊ณผ ์ด๋ป๊ฒ ์ํธ์์ฉํ๋์ง๋ฅผ ๊ด์ฐฐํ ์ ์์ต๋๋ค. ์ด๋ ์ด๋ฌํ ํจ์๋ค์ ์ ํ์ ์ผ๋ก ์ํ ์นํ์ ์ธ ๋ฒ์ ์ผ๋ก ๋ชจ์ํ ์ ์๋ค๋ ์ ์์ ์ ์ฉํฉ๋๋ค.
39
39
40
- ๋ชจ์ ํจ์๋ ํนํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ ์ฉํฉ๋๋ค. ์ค์ API ์ข
๋จ์ ์ผ๋ก๋ถํฐ ๋ฐ์ํ๋ ๋๋ ค์ง๊ณผ ์์์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ
์คํธ์ "๊ฐ์ง"๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ ๋ฐฉ๋ฒ์
๋๋ค [ (์์)] ( /docs/testing-recipes.html#data-fetching ) . ์ด๋ ํ
์คํธ๋ฅผ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค๋๋ค. [ Jest] ( https://jestjs.io/ ) ์ [ sinon] ( https://sinonjs.org/ ) ๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ์ ํจ์๋ค์ ์ง์ํฉ๋๋ค. ์๋ ํฌ ์๋ ํ
์คํธ์ ๊ฒฝ์ฐ ๋คํธ์ํฌ๋ฅผ ๋ชจ์ฌํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ง๋ง, ์ค์ API ์๋ํฌ์ธํธ๋ฅผ ํ
์คํธํ๊ธฐ๋ฅผ ์ํ ์๋ ์์ต๋๋ค.
40
+ ๋ชจ์ ํจ์๋ ํนํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ ์ฉํฉ๋๋ค. ์ค์ API ์ข
๋จ์ ์ผ๋ก๋ถํฐ ๋ฐ์ํ๋ ๋๋ ค์ง๊ณผ ์์์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ
์คํธ์ "๊ฐ์ง"๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ ๋ฐฉ๋ฒ์
๋๋ค [ < small > (์์)</ small > ] ( /docs/testing-recipes.html#data-fetching ) . ์ด๋ ํ
์คํธ๋ฅผ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ค๋๋ค. [ Jest] ( https://jestjs.io/ ) ์ [ sinon] ( https://sinonjs.org/ ) ๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋ชจ์ ํจ์๋ค์ ์ง์ํฉ๋๋ค. ์๋ ํฌ ์๋ ํ
์คํธ์ ๊ฒฝ์ฐ ๋คํธ์ํฌ๋ฅผ ๋ชจ์ฌํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ง๋ง, ์ค์ API ์๋ํฌ์ธํธ๋ฅผ ํ
์คํธํ๊ธฐ๋ฅผ ์ํ ์๋ ์์ต๋๋ค.
41
41
42
- ### ๋ชจ์ ๋ชจ๋ {#mocking-modules}
42
+ ### ๋ชจ๋ ๋ชจ์ํ๊ธฐ {#mocking-modules}
43
43
44
- ์ผ๋ถ ์ปดํฌ๋ํธ๋ ํ
์คํธ ํ๊ฒฝ์์ ์ ์๋ํ์ง ์๊ฑฐ๋ ํ
์คํธ์ ํ์์ ์ด์ง ์์ ๋ชจ๋์ ๋ํ ์์กด์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ์ ํ ๊ต์ฒด๋ฅผ ํตํด ์ด๋ฌํ ๋ชจ๋์ ์ ํ์ ์ผ๋ก ๋ชจ์ํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค [ (์์)] ( /docs/testing-recipes.html#mocking-modules ) .
44
+ ์ผ๋ถ ์ปดํฌ๋ํธ๋ ํ
์คํธ ํ๊ฒฝ์์ ์ ์๋ํ์ง ์๊ฑฐ๋ ํ
์คํธ์ ํ์์ ์ด์ง ์์ ๋ชจ๋์ ๋ํ ์์กด์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ ์ ํ ๊ต์ฒด๋ฅผ ํตํด ์ด๋ฌํ ๋ชจ๋์ ์ ํ์ ์ผ๋ก ๋ชจ์ํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค [ < small > (์์)</ small > ] ( /docs/testing-recipes.html#mocking-modules ) .
45
45
46
46
Node.js์์ Jest๊ฐ์ ๋ฌ๋๋ [ ๋ชจ์ ๋ชจ๋์ ์ง์ํฉ๋๋ค] ( https://jestjs.io/docs/en/manual-mocks ) . ๋ํ [ mock-require] ( https://www.npmjs.com/package/mock-require ) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
47
47
48
- ### ๋ชจ์ ํ์ด๋จธ {#mocking-timers}
48
+ ### ํ์ด๋จธ ๋ชจ์ํ๊ธฐ {#mocking-timers}
49
49
50
- ์ปดํฌ๋ํธ๋ setTimeout, setInterval, Data.now์ ๊ฐ์ ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋กํ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ
์คํธ ํ๊ฒฝ์์, ์ด๋ฌํ ํจ์๋ค์ ์๋์ผ๋ก ๋ฐ์ ํ ์ ์๋ ๋์ฒดํ์ผ๋ก ๋ชจ์ํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํ
์คํธ๊ฐ ๋นจ๋ฆฌ ์งํ๋๋๋ก ํ๋ ๋ฐ ์ข๋ค! ํ์ด๋จธ์ ์์กดํ๋ ํ
์คํธ๋ ์ฌ์ ํ ์์๋๋ก ํด๊ฒฐ๋์ง๋ง ๋ ๋นจ๋ฆฌ ํด๊ฒฐ๋ฉ๋๋ค[ (์์)] ( https://github.com/reactjs/ko.reactjs.org/blob/master/docs/testing-recipes.html#timers ) . [ Jest] ( https://jestjs.io/docs/en/timer-mocks ) , [ sinon] ( https://sinonjs.org/releases/v7.3.2/fake-timers/ ) , [ lolex] ( https://github.com/sinonjs/lolex ) ๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ํ๋ ์์ํฌ๋ ํ
์คํธ์์ ํ์ด๋จธ๋ฅผ ๋ชจ์ํ ์ ์๊ฒ ํด์ค๋๋ค.
50
+ ์ปดํฌ๋ํธ๋ ` setTimeout ` , ` setInterval ` , ` Data.now ` ์ ๊ฐ์ ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋กํ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ
์คํธ ํ๊ฒฝ์์, ์ด๋ฌํ ํจ์๋ค์ ์๋์ผ๋ก ๋ฐ์ ํ ์ ์๋ ๋์ฒดํ์ผ๋ก ๋ชจ์ํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํ
์คํธ๊ฐ ๋นจ๋ฆฌ ์งํ๋๋๋ก ํ๋ ๋ฐ ์ข๋ค! ํ์ด๋จธ์ ์์กดํ๋ ํ
์คํธ๋ ์ฌ์ ํ ์์๋๋ก ํด๊ฒฐ๋์ง๋ง ๋ ๋นจ๋ฆฌ ํด๊ฒฐ๋ฉ๋๋ค [ < small > (์์)</ small > ] ( https://github.com/reactjs/ko.reactjs.org/blob/master/docs/testing-recipes.html#timers ) . [ Jest] ( https://jestjs.io/docs/en/timer-mocks ) , [ sinon] ( https://sinonjs.org/releases/v7.3.2/fake-timers/ ) , [ lolex] ( https://github.com/sinonjs/lolex ) ๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ํ๋ ์์ํฌ๋ ํ
์คํธ์์ ํ์ด๋จธ๋ฅผ ๋ชจ์ํ ์ ์๊ฒ ํด์ค๋๋ค.
51
51
52
52
๊ฐ๋, ๋ชจ์ ํ์ด๋จธ๋ฅผ ์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์๊ธฐ๋ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋๋ฉ์ด์
์ ํ
์คํธํ๊ฑฐ๋, ๋๋ (API ์๋ ์ ํ ์ฅ์น์ ๊ฐ์) ํ์ด๋ฐ์ ๋ฏผ๊ฐํ ์ข
๋จ์ ๊ณผ์ ์ํธ์์ฉ์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ํ์ด๋จธ ๋ชจ์๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ
์คํธ/๋ฌถ์๋ณ๋ก ํ์ฑํ ๋ฐ ๋นํ์ฑํํ ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ํ
์คํธ ์คํ ๋ฐฉ๋ฒ์ ๋ช
์์ ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
53
53
0 commit comments