2

我正在尝试在 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

我验证了“this”在这种情况下是未定义的。当我运行应用程序时,“this”被定义并具有“$store”。我怎样才能使它在单元测试上下文中工作?

4

1 回答 1

1

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

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

foo将被调用vm.$refs.testas this

于 2017-04-01T00:15:45.407 回答