Мутации довольно просто проверить, потому что они просто функции, которые полностью полагаются на свои аргументы.Хитрость заключается в следующем: если вы используете модули ES2015 и помещаете свои мутации в файл store.js, вы должны экспортировать мутации в виде именованного экспорта в дополнение к экспорту по умолчанию.
Затем для проверки срабатывания определенных триггеров вы можете использовать шпионы Sinon .
const state = { ... }
// export `mutations` as a named export
export const mutations = { ... }
export default new Vuex.Store({
state,
mutations
})
Образец теста с использованием Mocha и Chai (вы также можете использовать другие библиотеки):
// mutations.js
export const mutations = {
triggerMutation: state => state.doSth
}
И файл спецификации:
// mutations.spec.js
var chai = require('chai');
var sinon = require('sinon');
var sinonChai = require('sinon-chai');
var mutations = require('store');
var expect = chai.expect;
chai.use(sinonChai);
const { mutate } = mutations
describe('mutations', () => {
it('Mutate should trigger', () => {
// set up your spy
var spy = sinon.spy();
// apply the mutation
mutate(spy);
// assert result
expect(spy).to.have.been.calledWith('triggerMutation');
})
})