1. Typescript용 jest 설치
먼저, typescript에서 사용할 수 있게끔 jest를 설치해 준다.
typescriptnpm install ts-jest @types/jest --save-dev
production 빌드시에는 jest가 필요 없으므로, --save-dev를 넣어서 설치해 주도록 하자.
2. babel 종속성 설치
https://jestjs.io/docs/getting-started#using-typescript
Getting Started · Jest
Install Jest using your favorite package manager:
jestjs.io
jest 페이지를 보면, Jest는 Babel을 통해 TypeScript를 지원한다고 나와 있다.
이에 필요한 모듈들은 다음과 같다.
1) Babel을 사용하기 위해 필요한 종속 항목
- babel-jest
- @bable/core
- @babel/preset-env
2) typescript를 이용하기 위한 종속 항목
- @babel/preset-typescript
위 4가지의 항목들을 설치해 주자.
typescriptnpm install babel-jest @babel/core @babel/preset-env @babel/preset-typescript --save-dev
3. babel.config.js 설정
root에 babel.config.js 파일을 생성해 준다.
이후, 아래와 같은 코드를 작성해주자.
javascriptmodule.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
4. jest.config.js 파일 추가
Jest가 TypeScript를 틀내스파일하려면 config파일이 추가적으로 필요하다.
javascriptnpm ts-jest config:init
위 명령어를 실행해 주거나,
root 파일 아래에 jest.config.js 파일을 추가해서 다음과 같은 코드를 적어주자.
javascript/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};
5. package.json scripts 추가
javascript "scripts": {
...
"test": "jest"
},
6. 테스트
일단 기존에 작성해둔 lib 코드가 다음과 같이 있다.
typescriptexport const replaceInfraDescription = (description: string) => {
const patternUp = /<@cc.vup>(.*?)<\/>/g;
const patternDown = /<@cc.vdown>(.*?)<\/>/g;
const patternKw = /<@cc.kw>(.*?)<\/>/g;
const patternDelete = /<\$cc\.(.*?)>(.*?)<\/>/g;
const deleteRemPattern = /<@cc.rem>/g;
const patternUpTag = "<span class='text-color'>$1</span>"
const patternDownTag = "<span class='danger-color'>$1</span>"
const patternKwTag = "<span class='text-color'>$1</span>"
const patternDeleteTag = "$2"
description = description.replace(patternUp, patternUpTag)
description = description.replace(patternDown, patternDownTag)
description = description.replace(patternKw, patternKwTag)
description = description.replace(patternDelete, patternDeleteTag)
description = description.replace(deleteRemPattern, "")
return description
}
내용은 딱히 중요하지 않고, string을 받아서 텍스트를 대치해 주고 다시 string을 반환하는 형태의 함수이다.
이제 테스트 모듈을 작성해 줄 건데, 기본적으로 jest는 __tests__ 하위 파일이나, .test.(js, ts...) 등등으로 끝나는 파일들을 테스트 해 준다.
루트 아래에 __tests__ 폴더를 만들고, 하위에 replace.test.ts 파일을 만들어 줬다.
typescriptimport {replaceInfraDescription} from '../lib/replaceText'
describe('replace test module', () => {
test('replaceInfraDescription', () => {
expect(replaceInfraDescription("asdf")).toBe("asdf");
});
});
위와 같이 만들어주고, replaceInfraDescription은 asdf가 넘어가면 asdf가 그대로 반환되게 되어 있다.
이제, npm run test로 확인!


'DevOps' 카테고리의 다른 글
테스트에 관하여..(2) - 효율적인 테스트 케이스 관리는 어떻게 해야 할까? (굉장히 주관적인) (2) | 2023.05.08 |
---|---|
테스트에 관하여.. (1) | 2023.05.08 |
[Ansible] Ansible + git Action + EC2 자동배포 + IAM 보안 설정 (0) | 2023.04.27 |
[gitAction] Ansible + gitAction을 이용한 EC2 자동배포 (0) | 2023.04.26 |
[Ansible] Ansible role을 이용한 github 배포 (0) | 2023.04.26 |
1. Typescript용 jest 설치
먼저, typescript에서 사용할 수 있게끔 jest를 설치해 준다.
typescriptnpm install ts-jest @types/jest --save-dev
production 빌드시에는 jest가 필요 없으므로, --save-dev를 넣어서 설치해 주도록 하자.
2. babel 종속성 설치
https://jestjs.io/docs/getting-started#using-typescript
Getting Started · Jest
Install Jest using your favorite package manager:
jestjs.io
jest 페이지를 보면, Jest는 Babel을 통해 TypeScript를 지원한다고 나와 있다.
이에 필요한 모듈들은 다음과 같다.
1) Babel을 사용하기 위해 필요한 종속 항목
- babel-jest
- @bable/core
- @babel/preset-env
2) typescript를 이용하기 위한 종속 항목
- @babel/preset-typescript
위 4가지의 항목들을 설치해 주자.
typescriptnpm install babel-jest @babel/core @babel/preset-env @babel/preset-typescript --save-dev
3. babel.config.js 설정
root에 babel.config.js 파일을 생성해 준다.
이후, 아래와 같은 코드를 작성해주자.
javascriptmodule.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'@babel/preset-typescript',
],
};
4. jest.config.js 파일 추가
Jest가 TypeScript를 틀내스파일하려면 config파일이 추가적으로 필요하다.
javascriptnpm ts-jest config:init
위 명령어를 실행해 주거나,
root 파일 아래에 jest.config.js 파일을 추가해서 다음과 같은 코드를 적어주자.
javascript/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};
5. package.json scripts 추가
javascript "scripts": {
...
"test": "jest"
},
6. 테스트
일단 기존에 작성해둔 lib 코드가 다음과 같이 있다.
typescriptexport const replaceInfraDescription = (description: string) => {
const patternUp = /<@cc.vup>(.*?)<\/>/g;
const patternDown = /<@cc.vdown>(.*?)<\/>/g;
const patternKw = /<@cc.kw>(.*?)<\/>/g;
const patternDelete = /<\$cc\.(.*?)>(.*?)<\/>/g;
const deleteRemPattern = /<@cc.rem>/g;
const patternUpTag = "<span class='text-color'>$1</span>"
const patternDownTag = "<span class='danger-color'>$1</span>"
const patternKwTag = "<span class='text-color'>$1</span>"
const patternDeleteTag = "$2"
description = description.replace(patternUp, patternUpTag)
description = description.replace(patternDown, patternDownTag)
description = description.replace(patternKw, patternKwTag)
description = description.replace(patternDelete, patternDeleteTag)
description = description.replace(deleteRemPattern, "")
return description
}
내용은 딱히 중요하지 않고, string을 받아서 텍스트를 대치해 주고 다시 string을 반환하는 형태의 함수이다.
이제 테스트 모듈을 작성해 줄 건데, 기본적으로 jest는 __tests__ 하위 파일이나, .test.(js, ts...) 등등으로 끝나는 파일들을 테스트 해 준다.
루트 아래에 __tests__ 폴더를 만들고, 하위에 replace.test.ts 파일을 만들어 줬다.
typescriptimport {replaceInfraDescription} from '../lib/replaceText'
describe('replace test module', () => {
test('replaceInfraDescription', () => {
expect(replaceInfraDescription("asdf")).toBe("asdf");
});
});
위와 같이 만들어주고, replaceInfraDescription은 asdf가 넘어가면 asdf가 그대로 반환되게 되어 있다.
이제, npm run test로 확인!


'DevOps' 카테고리의 다른 글
테스트에 관하여..(2) - 효율적인 테스트 케이스 관리는 어떻게 해야 할까? (굉장히 주관적인) (2) | 2023.05.08 |
---|---|
테스트에 관하여.. (1) | 2023.05.08 |
[Ansible] Ansible + git Action + EC2 자동배포 + IAM 보안 설정 (0) | 2023.04.27 |
[gitAction] Ansible + gitAction을 이용한 EC2 자동배포 (0) | 2023.04.26 |
[Ansible] Ansible role을 이용한 github 배포 (0) | 2023.04.26 |