テストコードからactionをdispatchしてaction内でaxiosを使用してモックへアクセスしたいのですが、actionに設置しているerrorに入り、以下のようにエラーとなります。
テストコード
import MockAdapter from 'axios-mock-adapter' import axios from 'axios' import Vuex from 'vuex' import { createLocalVue } from '@vue/test-utils' import { cloneDeep } from 'lodash' import { actions, mutations, state } from '../../store/data/test' import CERTIFY_INFO from '../../plugins/mockData/api/test' // beforeEachで毎回Storeを生成するために。 const initStore = () => { return cloneDeep({ state, mutations, actions }) } describe('callApiModule/actions', () => { let store let localVue beforeEach(() => { localVue = createLocalVue() localVue.use(Vuex) store = new Vuex.Store(initStore()) }) const mock = new MockAdapter(axios) afterEach(() => { mock.reset() }) it('certify test ', async () => { await store.dispatch('testAction', true) expect(store.state.result).toBe(0) }) })
- dispatchされるアクション
async testAction (context, payload) { const reqBody = { hoge: 'hoge' } try { // // 認証APIを呼び出す // ココでエラー!!!!!!!!!!!! const res = await this.$axios.$post( 'postURL', reqBody ) if (res) { // データ格納 context.commit('setData', res) } } catch (e) { // エラーオブジェクトをラップしてスローする throw new Error(JSON.stringify( { errorObj: e, errorPlace: 'store.hoge/hoge', errorValue: { state: context.state } } )) } },
axiosをモック化する必要があるようですが、その方法を調査中です。ご指摘あればいただけると助かります
あなたの回答
tips
プレビュー