Jest 와 Typescript 설정 방법을 찾아봤는데 이전 자료들이 많아서 현재 시점 (2021년 5월) 기준으로
설정하는 방법을 정리해봅니다. 이 문서도 시간이 지나면 과거 자료가 되겠지만
일단 정리해봅니다.
Jest
jest 설치
npm 설정
package.json1 2 3 4 5
| { "scripts": { "test": "jest" } }
|
jest 설정
jest 의 설정 파일( jest.config.js
) 을 생성합니다.
Bebel
Babel 설치
1 2 3 4 5
| npm i -D babel-jest @babel-core @babel-cli
npm i -D @babel/preset-env npm i -D @babel/preset-typescript
|
babel 설정
.babelrc1 2 3 4 5 6 7 8 9 10 11 12 13
| { "presets": [ [ "@babel/preset-env", "@babel/preset-typescript", { "targets": { "node": "current", }, }, ], ], }
|
Typescript
Typescript 설치
1
| npm i -D typescript ts-node-dev @types/node
|
Typescript 설정
Types 추가
tsconfig.json
에 types 를 추가한다.
tsconfig.json1 2 3 4 5 6 7 8
| { "compilerOptions": { ........ "types": [ "jest" ] ........ }
|
ts-jest 설치
1 2 3 4
| npm i -D ts-jest
npx ts-jest config:init
|
jest.config.js
에 ts-jest 를 preset 으로 추가한다
jest.config.js1 2 3 4 5
| module.exports = { .......... preset: "ts-jest", .......... }
|
테스트 해보기
index.ts 만들기
./src/index.ts1 2 3
| export function sampleFunction(x: string): string { return x + x; }
|
index.test.ts 만들기
./test/index.test.ts1 2 3 4 5 6 7
| import { sampleFunction } from "../src";
describe("This is a simple test", () => { test("Check the sampleFunction function", () => { expect(sampleFunction("hello")).toEqual("hellohello"); }); });
|
tsconfig 에 exclude 추가
tsconfig.json
에 exclude 를 추가한다.
tsconfig.json1 2 3 4 5 6 7 8
| { "compilerOptions": { ........ }, "exclude": [ "node_modules" ] }
|
build 용 tsconfig 생성
tsconfig-build.json1 2 3 4 5 6
| { "extends": "./tsconfig.json", "exclude": [ "test/**/*" ] }
|
package scripts 설정
package.json1 2 3 4 5 6 7
| { ........ "scripts": { "test": "jest --colors", "build": "tsc -p tsconfig-build.json" ........ },
|
test 실행
build 실행
build 후에 ./dist/index.js
파일이 생성된다.
연관포스트