title: Vue Unit Test Error: vuex requires a Promise polyfill in this browser
body: <p>I created a project using <code>vue-cli</code> and added <code>vuex</code> and <code>vue-router</code> in it. I am trying to setup a unit test for it, but I am getting following error. Without Vuex, it used to work.</p>
  
  <blockquote>
    <p>PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR</p>
    
    <p>Error: [vuex] vuex requires a Promise polyfill in this browser.</p>
    
    <p>at webpack:///~/vuex/dist/vuex.js:145:0 &lt;- index.js:9871</p>
  </blockquote>
  
  <p>The following are the relevant package versions:</p>
  
  <pre><code>"babel-core": "^6.0.0",
  "babel-eslint": "^7.0.0",
  "babel-loader": "^6.0.0",
  "vue": "^2.1.0",
  "vue-router": "^2.0.3",
  "vuex": "^2.0.0",
  "vuex-router-sync": "^3.0.0"
  "karma": "^1.3.0",
  "karma-coverage": "^1.1.1",
  "karma-mocha": "^1.2.0",
  "karma-phantomjs-launcher": "^1.0.0",
  "karma-sinon-chai": "^1.2.0",
  "karma-sourcemap-loader": "^0.3.7",
  "karma-spec-reporter": "0.0.26",
  "karma-webpack": "^1.7.0",
  "webpack": "^1.13.2",
  "webpack-dev-middleware": "^1.8.3",
  "webpack-hot-middleware": "^2.12.2",
  "webpack-merge": "^0.14.1"
  </code></pre>
  
  <p>The following is karma.conf.js:</p>
  
  <pre><code>// This is a karma config file. For more details see
  //   http://karma-runner.github.io/0.13/config/configuration-file.html
  // we are also using it with karma-webpack
  //   https://github.com/webpack/karma-webpack
  
  var path = require('path')
  var merge = require('webpack-merge')
  var baseConfig = require('../../build/webpack.base.conf')
  var utils = require('../../build/utils')
  var webpack = require('webpack')
  var projectRoot = path.resolve(__dirname, '../../')
  
  var webpackConfig = merge(baseConfig, {
    // use inline sourcemap for karma-sourcemap-loader
    module: {
      loaders: utils.styleLoaders()
    },
    devtool: '#inline-source-map',
    vue: {
      loaders: {
        js: 'isparta'
      }
    },
    plugins: [
      new webpack.DefinePlugin({
        'process.env': require('../../config/test.env')
      })
    ]
  })
  
  // no need for app entry during tests
  delete webpackConfig.entry
  
  // make sure isparta loader is applied before eslint
  webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || []
  webpackConfig.module.preLoaders.unshift({
    test: /\.js$/,
    loader: 'isparta',
    include: path.resolve(projectRoot, 'src'),
    exclude: /test\/unit|node_modules/
  })
  
  // only apply babel for test files when using isparta
  webpackConfig.module.loaders.some(function (loader, i) {
    if (loader.loader === 'babel') {
      loader.include = path.resolve(projectRoot, 'test/unit')
      return true
    }
  })
  
  module.exports = function (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: ['Chrome'],
      frameworks: ['mocha', 'sinon-chai'],
      reporters: ['spec', 'coverage'],
      files: ['./index.js'],
      preprocessors: {
        './index.js': ['webpack', 'sourcemap']
      },
      webpack: webpackConfig,
      webpackMiddleware: {
        noInfo: true
      },
      coverageReporter: {
        dir: './coverage',
        reporters: [
          { type: 'lcov', subdir: '.' },
          { type: 'text-summary' }
        ]
      }
    })
  }
  </code></pre>