Проверьте, не вызывает ли мутация реактивность - PullRequest
0 голосов
/ 12 декабря 2018

Недавно я столкнулся с проблемой с Vuex, которая, как оказалось, была вызвана мутацией, не вызывающей реактивность.Я не уверен, как определить, сработала ли реактивность в модульных тестах без установки компонента tho.Какой будет правильный способ проверить это без установки какого-либо компонента?

1 Ответ

0 голосов
/ 12 декабря 2018

Мутации довольно просто проверить, потому что они просто функции, которые полностью полагаются на свои аргументы.Хитрость заключается в следующем: если вы используете модули 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');
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...