-
โ๏ธ TDD | Jest ์ฌ์ฉํด๋ณด๊ธฐtdd 2021. 12. 7. 19:42
Jest ์ด๊ธฐ ์ธํ
Jest๋ ๊ฐ๋จํ ์๋ฐ์คํฌ๋ฆฝํธ ํ ์คํธ ํ๋ ์์ํฌ์ด๋ค. babel, typescript, node, react, angular, vue ๋ฑ์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ํ๋ก์ ํธ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
1. installing Jest using npm
npm install --save-dev jest
2. ์์ ํ์ผ sum.js ์์ฑ
//sum.js function sum(a,b){ return a + b; } module.exports = sum;
3. ํ ์คํธ ์์ ํ์ผ sum.test.js ์์ฑ
์ด ๋ __test__ ๋๋ ํ ๋ฆฌ ์์ ์๋ ํ์ผ์ด๋ test.js๋ก ๋๋๋ ํ์ผ๋ค์ ๋ชจ๋ ํ ์คํธ ํ์ผ๋ก ์ธ์ํ๋ค.
const sum = require('./sum'); test('add 1 + 2 to equal 3', () => { expect(sum(1,2))toBe(3); })
4. package.js ํ์ผ์ ์ถ๊ฐํ๊ธฐ
{ ..., "script" : { "test" : "jest" } }
์ด์ ํฐ๋ฏธ๋์์ npm run test ๋ฅผ ์ ๋ ฅํ์ฌ ์คํํ๋ฉด ๋๋ค.
ํ ์คํธ๋ฅผ ์ ์์ ์ผ๋ก ํต๊ณผํ๋ฉด ํฐ๋ฏธ๋์ ์์ ๊ฐ์ด ๋ฌ๋ค.
toBe vs toEqual
toBe๋ฅผ ์ฌ์ฉํ๋ค ๋ณด๋ฉด ์ฝ๋๋ฅผ ์๋ง๊ฒ ์์ฑํ๋๋ฐ ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
//makeArr.js function makeArr(a,b){ return [a,b]; } module.exports = makeArr;
//makeArr.test.js const { expect, test } = require("@jest/globals"); const makeArr = require("./makeArr"); test("makeArr(1,3) equal [1,3]", () => { expect(makeArr(1,3)).toBe([1,3]); })
a,b๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ก์ ๋ a,b๋ฅผ ๋ฐฐ์ด์ ๋ด๊ณ ๋ฐํํ๊ณ ์๋์ง ํ์ธํ๋ ์ฝ๋์ด๋ค.
makeArr ํจ์๋ [1, 3]์ ์ ๋ฐํํ๋ค. ํ์ง๋ง ์ด ํ ์คํธ ์ผ์ด์ค๋ ํต๊ณผ๋์ง ์์๋ค.
๊ทธ ์ด์ ๋ toBe๋๋ฌธ์ด๋ค. toBe๋ ๊ธฐ๋ณธํ ํ์ (๋ฌธ์์ด, ์ซ์, ๋ถ๋ฆฐ ๋ฑ)์ ๊ฒ์ฌํ ๋ ์ฌ์ฉํ๋ค. ๋๋ฌธ์ ์ฐธ์กฐํ ํ์ ์ toBe๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ฃผ์๊ฐ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ํญ์ ํ ์คํธ ์ผ์ด์ค๊ฐ ํต๊ณผ๋์ง ์๋๋ค.
์ฐธ์กฐํ ํ์ object๋ฅผ ํ ์คํธ ํ ๋๋ toEqual ์ ์ฌ์ฉํด์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํด์ผ ํ๋ค.
Jest
By ensuring your tests have unique global state, Jest can reliably run tests in parallel. To make things quick, Jest runs previously failed tests first and re-organizes runs based on how long test files take.
jestjs.io
'tdd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ๏ธ TDD | ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ, ์ ๋ ํ ์คํธ(ํ ์คํธ ์ผ์ด์ค) (0) 2020.11.25