你怎么得到这个'这个'在vuejs组件单元测试中定义的变量

时间:2017-04-01 00:10:13

标签: node.js unit-testing vue.js mocha mocha-webpack

我试图在npm脚本中使用mocha-webpack来测试vuejs组件。我在测试中嘲笑这样的vuex商店:

const vm = new Vue({
        template: '<div><test></test></div>',
        store: new Vuex.Store(mockedStore),
        components: {
            'test': TestItems
        }
    }).$mount()

我在组件上调用一个方法进行测试,例如:

vm.$options.components.test.methods.foo()

在组件中,我有访问商店的代码,例如:

this.$store.commit('bar', data)

问题是当它到达这一点时我得到了这个错误:

'Cannot read property \'commit\' of undefined' undefined undefined

我验证了这个&#39;在这种情况下是未定义的。当我运行应用时,&#39;这个&#39;已定义且已存储&#39;。如何在单元测试环境中使其工作?

1 个答案:

答案 0 :(得分:1)

您正在调用foo组件的test方法而没有test的实例。尝试做这样的事情:

const vm = new Vue({
  template: '<div><test ref="test"></test></div>',
  store: new Vuex.Store(mockedStore),
  components: {
    'test': TestItems
  }
}).$mount()
vm.$refs.test.foo()

foovm.$refs.test作为this进行调用。