Я проверил по крайней мере пару из учебных пособий по поводу насмешек и тестирования действий Vuex, но я не смог успешно реализовать их самостоятельно.Это всегда будет иметь значение от toHaveBeenCalled
до false
, хотя я следовал большинству шагов, указанных в ссылках выше.Вы можете издеваться над Действиями, не копируя их действительную функциональность, используя jest.fn()
верно?Я не понимаю, почему я все еще не могу успешно выполнить это.
store.js
export default new Vuex.Store({
state: {
currentSequence: ''
},
actions: {
runGenerator({ commit, state }, currentSequence) {
// do something with currentSequence
}
}
})
Home.vue (Обратите внимание, что это не весь код для этого компонента, ноЯ перечислил важные из них, в том числе метод submit.prevent, HTML-код, содержащий форму и вызывающий действие vuex)
<template>
<v-app id="inspire">
<v-form @submit.prevent="setNextVal" id="sequence-form">
<!-- form contents here -->
</v-form>
</v-app>
</template>
<script>
import { mapActions } from 'vuex'
export default {
methods: {
setNextVal() {
this.runGenerator(this.form.currentSequence)
this.form.currentValue = this.getCurrentValue
},
...mapActions([
'runGenerator'
]),
}
}
</script>
store.spec.js
import { shallowMount, createLocalVue } from '@vue/test-utils'
import Vue from 'vue'
import Vuex from 'vuex'
import Vuetify from 'vuetify'
import Home from '@/views/Home.vue'
const localVue = createLocalVue()
localVue.use(Vuex)
Vue.use(Vuetify)
describe('Home.vue', () => {
let actions
let store
beforeEach(() => {
actions = {
runGenerator: jest.fn()
}
store = new Vuex.Store({
state: {
currentSequence: ''
},
actions
})
})
it('Dispatches "runGenerator" when submit.prevent has been triggered', () => {
const wrapper = shallowMount(Home, { store, localVue })
const form = wrapper.find('#sequence-form')
form.trigger('submit.prevent')
expect(actions.runGenerator).toHaveBeenCalled()
})
})
Послепри выполнении теста я получаю следующую ошибку:
Ожидается (jest.fn ()). toHaveBeenCalled () Ожидается, что фиктивная функция была вызвана, но она не была вызвана
Что я пропустил ??Пожалуйста, просветите меня, ребята ... Я продолжал читать ссылки, представленные в Интернете, и я не могу найти какие-то другие решения в Интернете.