Как смоделировать Vue-роутер в магазине Vuex с помощью Jest? - PullRequest
2 голосов
/ 10 мая 2019

У меня есть такой магазин vuex:

// store.js
import Vuex from 'vuex'
import router from '../router' // this is a vuejs router

export const actions = {
  async load({ dispatch, commit }) {
    if (router.currentRoute.name === 'one-route') {
      dispatch('oneModule/oneAction', null, { root: true })
    } 
  }
}

export default new Vuex.Store({
  state,
  actions,
  ...
})

Я бы хотел проверить его с помощью Jest.

// store.test.js
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import VueRouter from 'vue-router'
import { actions } from './store'
const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(VueRouter)

describe('store tests', () => {
  let store, router, oneAction

  beforeEach(() => {
    oneAction = jest.fn()
    const modules = {
      oneModule: {
        namespaced: true,
        actions: { oneAction }
      }
    }
    store = new Vuex.Store({ actions, modules })
    router = new VueRouter({ routes: [{ name: 'one-route' }] })
  }

  test('call module action if one-route is selected', async () => {
    router.push({ name: 'one-route' })
    await store.dispatch('load')

    expect(oneAction).toHaveBeenCalled()
  })
}

При этом возникает следующая ошибка:

Expected mock function to have been called, but it was not called.

Как правильно смоделировать маршрутизатор для выполнения этого теста?Спасибо

...