我正在试着测试VueX商店的不同部分。我在单个文件(index.js)中保存了突变、getter和其他文件,但是当将该文件导入测试文件时,它不知怎么地不起作用。这是我的VueX: Vue.use(Vuex);
Index.js
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中,我想测试它:
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。
发布于 2020-03-05 16:22:29
测试vuex有两种方法。第一种是单元测试操作、突变和获取器。二是直接测试工作存储。
单元测试突变
如果您想测试从组件中分离出来的存储突变,我建议导出它们。
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
})然后,您可以直接导入和测试突变。
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商店
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)
})https://stackoverflow.com/questions/60549520
复制相似问题