Vue.js 测试调用另一个getter的getter,而不进行模拟-或者如何在测试中装载Vuex?
我无法理解使用Vuex的一些基本原理:对于在应用程序中运行良好的存储,在运行测试时,由于依赖项注入,我调用其他getter的getter都无法工作 请参阅以下具有两个getter的存储:Vue.js 测试调用另一个getter的getter,而不进行模拟-或者如何在测试中装载Vuex?,vue.js,vuex,Vue.js,Vuex,我无法理解使用Vuex的一些基本原理:对于在应用程序中运行良好的存储,在运行测试时,由于依赖项注入,我调用其他getter的getter都无法工作 请参阅以下具有两个getter的存储: const state = { items: {}, } const getters = { item: (state) => (itemIndex) => { return state.items[itemIndex] }, reducedItem: (state, ge
const state = {
items: {},
}
const getters = {
item: (state) => (itemIndex) => {
return state.items[itemIndex]
},
reducedItem: (state, getters) => (itemIndex) => {
return getters.item(itemIndex).reduce((acc, subitem) => {
return acc + ';' + subitem.text
}, '')
}
}
const mutations = {
}
const actions = {
}
export default {
state,
getters,
mutations,
actions
}
以及一个示例测试:
import DemoStore from '@/store/modules/DemoStore'
import { expect } from 'chai'
const getters = DemoStore.getters
describe('store/DemoStore', () => {
it('reducedItem reduces', () => {
var state = {
items: [
[{text: 'a'}, {text: 'b'}, {text: 'c'}],
]
}
let result = getters.reducedItem(state, getters)(0)
expect(result).to.equal('abc')
})
})
运行测试时,reducedItem
getter调用getters.item
,而不是调用getters.item(state)
并返回正确的值,而是调用普通的getters.item
函数,该函数返回一个函数。因此,测试环境中的代码根本不起作用
我知道VUEX建议嘲笑吸气者,但是来吧,不要太认真考虑嘲弄。
是否有办法在测试中“装载”vuex存储,以便与在应用程序中一样使用它?
DemoStore
是提供给vuex构造函数的选项对象。Vuex的创建方式如下:
let store = new Vuex.Store(DemoStore);
getter应该作为
商店提供。getter
的行为与Vuex商店的预期一样。您是否尝试创建商店,新的Vuex.store(DemoStore)
?太好了,错过了这里显而易见的东西@如果你想添加一个答案,我会验证它,很高兴它对你有用。当然