使用Vueify使用VueJS单个文件组件运行Karma测试

时间:2017-04-05 22:11:46

标签: browserify vuejs2 vue-component karma-mocha vueify

我正在尝试用Karma运行我的单元测试。我有calendar.tests.js文件看起来很像这样:

import { handleSelectDay } from '../components/Calendar/index.vue'
describe('Calendar', () => {
  describe('handleSelectDay', () => {
    const data = {};

    describe('updates data', () => {
      it('should set the selectedDay to a new id', () => {
        handleSelectDay('id');
        expect(data.daySelected).to.equal('id');
      });
    });
  });
});

当我使用Karma运行此测试时,我得到以下内容:TypeError: (0 , _index.handleSelectDay) is not a function is not a function

我的karma.conf.js看起来像:

module.exports = function (config) {
  config.set({

    frameworks: ['browserify', 'mocha'],
    files: ['static/js/apps/FutureHours/test/calender.tests.js'],
    preprocessors: {
      'static/js/apps/**/test/*.js': ['browserify']
    },
    browsers: ['Chrome'],
    logLevel: 'LOG_DEBUG',

    plugins: [
      'karma-mocha',
      'karma-browserify',
      'karma-chrome-launcher',
      'karma-spec-reporter'
    ],

    browserify: {
      debug: true,
      transform: [['babelify', { presets: ['env'] }], 'vueify']
    }
  })
}

如何让Karma与VueJS单个文件组件配合使用?

1 个答案:

答案 0 :(得分:0)

问题在于,您无法从.vue组件进行命名导出。相反,组件中使用的任何方法都必须通过单元测试中的组件对象进行访问。在组件methods之外使用的任何函数都应该存在于他们自己的ES模块中,以便更容易对单元进行单元测试。