회사 프로젝트에서는 기존 레거시 프로젝트에 webpack, babel을 적용한 환경으로 vue나 react같은 프레임워크를 사용하지 않고 jsp를 사용하고 있다.
unit test와 integration test, e2e test 모두를 도입하려고 했지만 코드상 unit test와 e2e test만을 진행하기로 결정했다.
unit test는 공통으로 쓰이는 함수들을 체크하기 위해 사용하고, e2e 테스트는 의도한 대로 코드가 잘 동작하는지 확인하기 위해 진행한다.
단위테스트란 최소 단위의 함수, 컴포넌트 등을 테스트한다.
javascript 테스트 중 인기 있는 라이브러리는 Jest와 Jasmine이다.
npm install -D jest
npm install -D jest-environment-jsdom
npm install -D eslint-plugin-jest
script: {
'test': 'jest'
}
Jest encountered an unexpected token
오류 발생
import
자체를 읽지 못하는 이슈로, babel-jest로 javascript code transformation 필요. babel-jest 설치 및 설정이 필요하다.
해결방법
npm install -D babel-jest
const config = {
transform: {
'\\.js$': '<rootDir>/node_modules/babel-jest',
},
}
Cannot find module '@/common' from '__test__/common.test.js'
오류 발생
import { isNullString } from '@/common';
라인에서 발생하는 오류로, @
alias 선언이 안돼있어 module import 시 파일 경로를 찾지 못해 발생하는 오류
해결방법
const config = {
moduleNameMapper: {
'\\.(css|less|scss)$': '<rootDir>/<파일 경로>/styleMock.js',
}
}
SyntaxError: Unexpected token .
오류 발생
import './stype.css';
라인에서 발생하는 오류로, 사용하고 있는 library 내부에서 css를 import해서 사용하고 있을 때 발생하는 오류
해결방법
export default {};
const config = {
moduleNameMapper: {
'\\.(css|less|scss)$': '<rootDir>/<파일 경로>/styleMock.js',
}
}
jquery-ui library 사용중 ReferenceError: jQuery is not defined
오류 발생
jquery-ui node_modules/dist/jquery-ui.js 내부 jQuery 선언이 돼있지 않아 발생하는 오류로, jest 실행 전 환경설정 파일 읽어들일 수 있도록 수정
해결방법
import $ from 'jquery';
global.$ = global.jQuery = $;
const config = {
setupFiles: ['<rootDir>/<파일 경로>/test-env.js'],
}