首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试VueX存储

测试VueX存储
EN

Stack Overflow用户
提问于 2020-03-05 16:04:32
回答 1查看 1.3K关注 0票数 2

我正在试着测试VueX商店的不同部分。我在单个文件(index.js)中保存了突变、getter和其他文件,但是当将该文件导入测试文件时,它不知怎么地不起作用。这是我的VueX: Vue.use(Vuex);

Index.js

代码语言:javascript
复制
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);


export default new Vuex.Store({
  state: {
    pickedDates:[]
  },
  mutations: {
    mutatePickedDates: (state, payload) => {
      state.pickedDates = payload;
    },
})

现在在Store.spec.js中,我想测试它:

代码语言:javascript
复制
import storeConfig from '@/store/index.js'

const store = storeConfig


test('check if state is working', () =>{
    const state = {
        pickedDates: []
    }
    const dates = ['1995-01-01', '1995-01-01']
    store.mutations.mutatePickedDates(state, {dates})
    expect(state.pickedDates).toBe(dates)

})

但是我得到了错误:运行测试时的TypeError: Cannot read property 'mutatePickedDates' of undefined

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 16:22:29

测试vuex有两种方法。第一种是单元测试操作、突变和获取器。二是直接测试工作存储。

单元测试突变

如果您想测试从组件中分离出来的存储突变,我建议导出它们。

代码语言:javascript
复制
import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export const mutations = {
  mutatePickedDates: (state, payload) => {
    state.pickedDates = payload;
  }
};

export default new Vuex.Store({
  state: {
    pickedDates:[]
  },
  mutations: mutations
})

然后,您可以直接导入和测试突变。

代码语言:javascript
复制
import { mutations } from '@/store/index.js'

test('check if state is working', () =>{
    const state = {
        pickedDates: []
    }
    const dates = ['1995-01-01', '1995-01-01']
    mutations.mutatePickedDates(state, dates)
    expect(state.pickedDates.length).toBe(2)
})

使用工作Vuex商店

代码语言:javascript
复制
import { createLocalVue } from '@vue/test-utils'
import Vuex from 'vuex'
import store from '@/store/index.js'

test('check if state is working', () =>{
    // initial state
    const state = {
        pickedDates: []
    }

    const dates = ['1995-01-01', '1995-01-01']

    // create local instance and vuex store
    const localVue = createLocalVue()
    localVue.use(Vuex)

    // commit mutation
    store.commit('mutatePickedDates', dates)

    expect(store.pickedDates.length).toBe(2)
})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60549520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档