๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ‘จ‍๐Ÿ’ป web.dev/js.ts

TypeScript + Jest ์œ ๋‹› ํ…Œ์ŠคํŠธ ์ž‘์„ฑํ•˜๊ธฐ

by HandHand 2022. 11. 27.

 

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” TypeScript ํ™˜๊ฒฝ์—์„œ Jest ๋กœ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์„ค์ •๋“ค๊ณผ

ํ™•์ธ์„ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฐ€์žฅ ๋Œ€์ค‘์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” Jest ์ž…๋‹ˆ๋‹ค.

 

๐Ÿ“Œ Jest ์„ค์ •

1๏ธโƒฃ ํŒจํ‚ค์ง€ ์„ค์น˜

๋จผ์ € ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

npm i -D jest @jest/globals ts-jest

 

 

๐Ÿ’ก @jest/globals 

๋ช…์‹œ์ ์ธ import ๋ฅผ ์„ ํ˜ธํ•˜๊ธฐ์—, ํ•ด๋‹น ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์„œ jest api ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ก ts-test 

TS ๋กœ๋œ ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ปดํŒŒ์ผ + ํƒ€์ž… ์ฒดํฌ๊นŒ์ง€ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

 

2๏ธโƒฃ config ํŒŒ์ผ ์ถ”๊ฐ€

// jest.config.js

/** @type {import('jest').Config} */
const config = {
  verbose: true,
  transform: {
    '^.+\\\\.tsx?$': 'ts-jest',
  },
	moduleNameMapper: {
    '@/(.*)$': '<rootDir>/src/$1',
  },
}

module.exports = config

 

๐Ÿ’ก verbose

๋ชจ๋“  ํ…Œ์ŠคํŠธ ๋กœ๊ทธ๋“ค์„ ๊ณ„์ธต๊ตฌ์กฐ๋กœ ํ„ฐ๋ฏธ๋„์— ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก transform

typescript ํŒŒ์ผ์— ๋Œ€ํ•ด์„œ ts-test ๋ฅผ ์ ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” jest ๋‚ด๋ถ€์—์„œ babel-jest ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ก moduleNameMapper

ํ…Œ์ŠคํŠธ ํŒŒ์ผ (*.spec.ts, *.test.ts) ๋‚ด์—์„œ import path alias ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋งคํผ ์„ค์ •์ž…๋‹ˆ๋‹ค.

 

๊ทธ ์™ธ์˜ ์„ค์ • ์˜ต์…˜๋“ค์€ ์•„๋ž˜ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Configuring Jest · Jest

 

Configuring Jest · Jest

The Jest philosophy is to work great by default, but sometimes you just need more configuration power.

jestjs.io

 

3๏ธโƒฃ test run script ๋“ฑ๋ก

package.json ์— test ๋ฅผ ์ˆ˜ํ–‰ํ•  script ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

 

scripts: {
	"test": "jest --watch"
}

 

๐Ÿ“Œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ด…๋‹ˆ๋‹ค.

 

// add.spec.ts

import { test, expect } from '@jest/globals'

function add(a: number, b: number) {
  return a + b
}

test('add', () => {
  expect(add(1, 2)).toBe(3)
})

 

 

์ด์ œ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋†’์—ฌ๋ณด๋Š” ์ผ๋งŒ ๋‚จ์•˜๋„ค์š” ๐Ÿ˜„

 

๐Ÿ“Œ ์ฐธ๊ณ ์ž๋ฃŒ

Testing TypeScript apps using Jest - LogRocket Blog

๋ฐ˜์‘ํ˜•

๐Ÿ’ฌ ๋Œ“๊ธ€