Vue.jsでテストをしています。(jest)
やりたい事: dispatchでvuexのアクションが呼ばれるか、をテストしたいです。
現状: コンポーネント内のメソッドが呼ばれるのは確認できますが、その中でdispatchしているvuex側の呼び出しが確認出来ません。
error
1● ButtonListTest › dispatchでvuexのアクションが動く事 2 3 expect(jest.fn()).toHaveBeenCalled() 4 5 Expected number of calls: >= 1 6 Received number of calls: 0
test
1import ButtonListTest from "../../resources/js/components/ButtonList"; 2import { shallowMount, createLocalVue } from '@vue/test-utils'; 3import Vuex from 'vuex' 4import { config } from '@vue/test-utils' 5config.showDeprecationWarnings = false 6 7const localVue = createLocalVue() 8 9localVue.use(Vuex) 10 11describe('ButtonListTest', () => { 12 13 let store 14 let user_actions 15 16 beforeEach(() => { 17 user_actions = { 18 show_item_list: jest.fn() 19 } 20 store = new Vuex.Store({ 21 modules: { 22 user: { 23 state: { 24 show_items: false, 25 }, 26 actions: user_actions 27 } 28 } 29 }) 30 }) 31 32 const wrapper = shallowMount(ButtonListTest, { store, localVue }); 33 34 it('dispatchでvuexのアクションが動く事', () => { 35 const stub = jest.fn(); 36 wrapper.setMethods({ 37 show_items: stub, 38 }); 39 wrapper.find('[data-testid="show_items"]').trigger('click'); 40 expect(stub).toHaveBeenCalled(); 41 42 expect(user_actions.show_item_list).toHaveBeenCalled() 引っ掛かる部分です 43 }) 44});
vuex
1import Vue from 'vue'; 2import Vuex from 'vuex'; 3 4Vue.use(Vuex); 5 6const User = { 7 namespaced: true, 8 state: { 9 show_items: false, 10 }, 11 mutations: { 12 show(state) { 13 if(state.show_items == true) { 14 state.show_items = false 15 } else { 16 state.show_follows = false 17 state.like_items = false 18 state.show_items = true 19 } 20 } 21 }, 22 actions: { 23 show_item_list({commit}) { 24 commit('show') 25 } 26 } 27} 28 29export default new Vuex.Store({ 30 modules: { 31 user: User, 32 } 33})
component
1<a href="#" @click.prevent="show_items" class="ml-2" data-testid="show_items" style="font-size: 1rem;">Items </a> 2<script> 3export default { 4 methods: { 5 show_items() { 6 this.$store.dispatch('user/show_item_list') 7 }, 8 } 9} 10</script>
試した事
user_actionsをactionsに書き換える。
自分の理解だと呼べるはずなのですが、errorになってしまいます。
errorの内容としては0と表示されているので、呼び出せていない事が原因と見ていますが、解決出来ずにいます。
どなたか知識のある方居ましたら、ご教授頂きたいです。
よろしくお願い致します。
jest 26.6.3
vue 2.5.17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。