jest@29 버전 기준으로 작성되었습니다.
단위 테스트 환경이 구성되어있다는 전제로 합니다.
Vue3 + Jest@29 단위 테스트 환경 설정 - https://velog.io/@minu-j/Vue3-Jest29-unit-test
$ yarn add -D @vue/test-utils @vue/vue3-jest jest-environment-jsdom ts-node
@vue/test-utils
: Vue 컴포넌트, 이벤트 트리거, DOM 조작 등 수행
@vue/vue3-jest
: Vue3 공식 jest 테스트 프리셋
jest-environment-jsdom
: Node.js환경에서 브라우저의 DOM 시뮬레이션하는 jsdom 환경을 jest에서 사용할 수 있도록 함
ts-node
: Node.js환경에서 동작하는 TypeScript 런타임, TypeScript 파일을 실행할 수 있도록 함import type { Config } from 'jest';
const config: Config = {
...
testEnvironment: 'jest-environment-jsdom', // jsdom 환경 구성
testEnvironmentOptions: {
customExportConditions: ['node', 'node-addons'],
},
...
transform: {
...
'^.+\\.vue$': '@vue/vue3-jest', // .vue 파일의 트랜스파일링 옵션을 '@vue/vue3-jest'로 설정
},
};
export default config;
import { describe, expect, it } from '@jest/globals';
import { someComponent } from '@/.../someComponent.vue';
describe('someComponent 컴포넌트테스트', () => {
it('컴포넌트테스트의 상세 테스트 항목', () => {
const wrapper = mount(TestVue, {
props: {
...
},
});
expect(wrapper.text()).toContain('Hello World!');
});
...
});
yarn test
# or
yarn test --watch
Vue 공식문서 컴포넌트 테스트 - https://ko.vuejs.org/guide/scaling-up/testing#component-testing
Vue test utils 공식문서 - https://test-utils.vuejs.org/