본문 바로가기

Frontend Development/Vue.js

[Vue.js] Karma로 Unit 테스트 시 특정 폴더 제외 하기

Vue 프로젝트에 storyboard 등의 외부 라이브러리를 연동 시 npm run unit테스트를 하면 전체 소스에서 테스팅을 돌리려다 파싱 에러가 나곤 한다. 이때는 테스트에 연관된 files를 명시적을 지정할 수 있다.

 

karma.conf.js를 보면 files 항목에서 파일 필터를 설정할 수 있다.

 

test/unit/karma.conf.js:5

module.exports = function karmaConfig (config) {
  config.set({
    // to run in additional browsers:
    // 1. install corresponding karma launcher
    //    http://karma-runner.github.io/0.13/config/browsers.html
    // 2. add it to the `browsers` array below.
    browsers: ['ChromeHeadless'],
    frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
    reporters: ['spec', 'coverage'],
    files: [
      '../../node_modules/es6-promise/dist/es6-promise.auto.js',
      './index.js'
    ],
    preprocessors: {

 

원하지 않는 폴더가 있을 경우 아래와 같이 제외 폴더를 필터에 명시하면 된다.

 

test/unit/index.js:4

import Vue from 'vue'

Vue.config.productionTip = false

// require all test files (files that ends with .spec.js)
const testsContext = require.context('./specs', true, /\.spec$/)
testsContext.keys().forEach(testsContext)

// require all src files except main.js or router/*.js for coverage.
// you can also change this to match only the subset of files that
// you want coverage for.
const srcContext = require.context('../../src', true, /^\.\/(?!.*(?:main|router|stories)).*(\.js)?$/)
srcContext.keys().forEach(srcContext) 
=> main, router, stories폴더를 제외하도록 함