Vue.js 测试调用另一个getter的getter,而不进行模拟-或者如何在测试中装载Vuex?

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

我无法理解使用Vuex的一些基本原理:对于在应用程序中运行良好的存储,在运行测试时,由于依赖项注入,我调用其他getter的getter都无法工作

请参阅以下具有两个getter的存储:

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)
?太好了,错过了这里显而易见的东西@如果你想添加一个答案,我会验证它,很高兴它对你有用。当然