В настоящее время я тестирую конкретные действия модуля vuex.
Вот мой код: store / modules / users.js
export const state = () => ({
users: [],
})
export const mutations = () => ({
SET_USERS(state, users) {
console.log('Should reach Here');
state.users = users
}
})
export const actions = () => ({
getUsers({ commit }) {
return axios.get('/users')
.then(response => {
console.log('Reaching Here');
commit('SET_USERS', response.data.data.results)
})
.catch(error => {
console.log(error);
})
}
})
export const getters = () => {
users(state) {
return state.users;
}
};
Затем, когда я проверяю свои действия:
tests /store / modules / users.js
it('should dispatch getUsers', () => {
mock.onGet('/users').reply(200, {
data: {
results: [
{ uid: 1, name: 'John Doe' },
{ uid: 2, name: 'Sam Smith' }
]
},
status: {
code: 200,
errorDetail: "",
message: "OK"
}
});
const commit = sinon.spy();
const state = {};
actions.getUsers({ commit, state });
expect(getters.users(state)).to.have.lengthOf(2);
});
, когда я пытаюсь запустить тест npm run dev
, он показывает console.log из действия, но из мутации SET_USERS
не показывает консоль.log
Я имею в виду эту документацию, в которой я могу использовать шпиона с помощью sinon () https://vuex.vuejs.org/guide/testing.html
Как я могу получить доступ к внутреннему действию commit
, чтобы вызвать мутацию SET_USERS
?