Как получить доступ к this.app и / или внедренному плагину в тесте магазина Vuex с помощью Nuxt и Jest - PullRequest
1 голос
/ 02 мая 2019

В действии магазина Vuex я использую this.app.router и плагин Nuxt, который внедряет свойство $ alert.

Когда я пытаюсь протестировать хранилище Vuex с помощью Jest, тест не проходит, потому что оба свойства не определены.

Я тестирую геттеры, мутации и действия отдельно, какфункция javascript, как описано здесь .

Так что не используйте Vue Test Utils или Vuex.

То, что я уже пробовал без какого-либо эффекта:

  • установка новых Vuex.Store и localVu e из vue-test-utils.
  • установка глобальной переменной со свойствами app и $alert до теста.
// actions.js
export default {
  async signup({ dispatch, state }, payload) {
      try {
        await dispatch('createUserData', payload)
        await dispatch('setUser', payload)
        this.app.router.push(state.redirectAfterLogin)
      } catch (error) {
        this.$alert.error(`errors.${error.code}`)
      }
  }
}

// actions.spec.js
import actions from '@/store/auth/actions'

describe('Auth store', () => {
  let dispatch
  let state

  test('signup', async () => {
    dispatch = jest.fn()
    state = {
      user: null
    }
    await actions.signup(
      { dispatch, state },
      {
        email: 'test@test.nl',
        password: 'password',
        displayName: 'Test'
      }
    )
    expect(dispatch).toHaveBeenCalledWith('createUserData')
    expect(dispatch).toHaveBeenCalledWith('setUser')
  })
})

Кто-то знает, где и как я могу определить этот метод как фиктивные функции в моем тестовом файле?

...