Как вы получаете переменную 'this', определенную в модульном тесте компонента vuejs

Я пытаюсь использовать mocha-webpack в скрипте npm для тестирования компонента 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" определяется и имеет "$ store". Как я могу заставить его работать в контексте модульного теста?

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()

foo будет вызван с vm.$refs.test как this,

Другие вопросы по тегам