В действии магазина 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')
})
})
Кто-то знает, где и как я могу определить этот метод как фиктивные функции в моем тестовом файле?