我们主要想针对 Vuex 中的 mutation 和 action 进行单元测试。

测试 mutation

mutation 很容易被测试,因为它们仅仅是一些完全依赖参数的函数。这里有一个小技巧,如果你在 store.js文件中 定义了 mutation,并且使用 es2015模块功能默认输出了Vuex.Store的示例,那么你仍然可以给 mutation 取个变量名然后把它输出去:

  1. const state = { ... }
  2. // mutations 作为命名输出对象
  3. export const mutations = { ... }
  4. export default new Vuex.Store({
  5. state,
  6. mutations
  7. })

下面是用 Mocha + Chai 测试一个 mutation 的例子(实际上你可以用任何你喜欢的测试框架)

  1. // Mutations.js
  2. export const mutations = {
  3. increment:state => state.count+
  4. }
  1. // mutations.spec.js
  2. import { expect } from 'chai'
  3. import { mutations } from './store'
  4. // 解构 'mutations'
  5. const { increment } = mutations
  6. describe('mutations',()=>{
  7. if('INCREMENT',()=>{
  8. // 模拟状态
  9. const state = { count:0}
  10. // 应用 mutation
  11. increment(state)
  12. // 断言结果
  13. expect(state.count).to.equal(1)
  14. })
  15. })

测试 Action