๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Vue

Vue + jest + typescript ์„ธํŒ…

by frontChoi 2023. 5. 1.
๋ฐ˜์‘ํ˜•

๐ŸŽพ  pacakge.json ์„ค์น˜

npm install --save-dev jest @vue/test-utils
npm i @vue/vue3-jest
npm install --save-dev @vue/test-utils
npm install --save-dev ts-jest
npm install --save-dev @types/jest
npm install --save-dev @babel/core 
npm install --save-dev @babel/preset-env 
npm install --save-dev @babel/preset-typescript 
npm install --save-dev jest-environment-jsdom 
npm install --save-dev jest-transform-stub

 

 

๐Ÿ˜† tsconfig.json(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ)

{
  "compilerOptions": {
    "types": [
      "jest"
    ]
  }
}

๐Ÿฆถ babel.config.json

{
  "presets": ["@babel/preset-env","@babel/preset-typescript"]
}

 

๐Ÿ‘ง jest.config.js(jest ํ™˜๊ฒฝ์„ธํŒ…)

module.exports = {
   moduleFileExtensions: [
      'js',
      'ts',
      'json',
      // ๋ชจ๋“  vue ํŒŒ์ผ(`*.vue`)์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Jest์—๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค
      'vue'
   ],
   transform: {
      // process `*.vue` files with `vue-jest`
      '.*\\.(vue)$': '@vue/vue3-jest',
      '^.+\\.tsx?$': 'ts-jest',
      '.*\\.(js)$': 'babel-jest',
      '.*\\.(ts)$': 'babel-jest',
      '.+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub'
   },
   moduleNameMapper: {
      // ๋ณ„์นญ @(ํ”„๋กœ์ ํŠธ/src) ์‚ฌ์šฉํ•˜์—ฌ ํ•˜์œ„ ๊ฒฝ๋กœ์˜ ํŒŒ์ผ์„ ๋งตํ•‘ํ•ฉ๋‹ˆ๋‹ค
      '^@/(.*)$': '<rootDir>/src/$1'
   },
   testMatch: ['**/*.spec.[jt]s?(x)', '**/*.test.[jt]s?(x)'],
   // node_modules ๊ฒฝ๋กœ ํ•˜์œ„์— ์žˆ๋Š” ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ๋Œ€์ƒ์—์„œ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค
   testPathIgnorePatterns: ['/node_modules/'],
   testEnvironment: 'jsdom',
   testEnvironmentOptions: {
      customExportConditions: ['node', 'node-addons']
   },
   transformIgnorePatterns: ['node_modules/(?!@ngrx|(?!deck.gl)|ng-dynamic)']
};

 

๐Ÿง‘ package.json(๋ช…๋ น์–ด ๋“ฑ๋ก)

{
  
  "scripts": {
    "test:unit": "jest --watchAll"
  }
}

 

๐Ÿ‘ถ๋ช…๋ น์–ด ์‹คํ–‰

npm run test:unit
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€