Как вы получаете переменную '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
,