При попытке протестировать компонент Logout.vue у меня возникают ошибки в связи с «dispatch».
GitHub Repository: https://github.com/SergioFerrera/jest_vuejs
Код ошибки:
TypeError: Cannot read property 'push' of undefined
Я попытался повторить код здесь: https://medium.com/@lachlanmiller_52885/mocking-vuex-in-vue-unit-tests-b6eda1c4d301
logout.test.js
import Vuex from 'vuex'
import { shallow, createLocalVue } from 'vue-test-utils'
import Logout from "../../src/app/components/Logout.vue";
const localVue = createLocalVue()
localVue.use(Vuex)
describe('Logout.vue', () => {
let store
let logout
beforeEach(() => {
logout = {
destroyToken: jest.fn()
}
store = new Vuex.Store({
logout
})
})
it('comprobando llamadas a destroyToken', () => {
const wrapper = shallow(Logout, {
store,
localVue
})
expect(logout.destroyToken.mock.calls).toHaveLength(1)
})
})
Logout.vue
<template>
</template>
<script>
export default {
created(){
this.$store.dispatch('destroyToken')
.then(response => {
this.$router.push({ name: 'Inicio'})
})
}
}
</script>