Javascript 尝试从vuex测试使用mapState的vue组件

Javascript 尝试从vuex测试使用mapState的vue组件,javascript,vue.js,jestjs,sinon,Javascript,Vue.js,Jestjs,Sinon,当前尝试测试正在使用vuex…mapState方法的vue组件,但仅通过将其引入该组件而失败 这是我得到的当前错误: ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import _Object$defineProperty from "../../core-js/object/define-property"; 这是我的测试 SimpleCompone

当前尝试测试正在使用vuex…mapState方法的vue组件,但仅通过将其引入该组件而失败

这是我得到的当前错误:

({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import _Object$defineProperty from "../../core-js/object/define-property";
这是我的测试

SimpleComponentTest.spec.js

import { shallowMount, createLocalVue } from '@vue/test-utils';
import SimpleStore from '../../src/components/SimpleComponent.vue';
import Vuex from 'vuex';

const sinon = require('sinon');
const localVue = createLocalVue();
localVue.use(Vuex);

describe('SimpleComponent.vue', () => {
    it('Is Vue Instance', () => {
        const wp = shallowMount(SimpleComponent, { computed: { users: () => 'someValue' }, localVue });
        expect(wp.isVueInstance()).toBe(true);
    });
});


我在使用Sinon的Jest进行测试。在我的测试中,我对如何正确设置商店有点困惑,但这是我在网上查找时发现的一种方法

代码库比我向您展示的要大一些,但这是因为在运行了几个小时的错误之后,我发现我需要使用…mapState方法测试最简单的代码,并从那里重新构建它

任何帮助都将不胜感激:)


目标:通过一个简单的测试,测试使用vuex中的…mapState([])的组件

Replace
import-mapState from'vuex'通过
从“vuex”导入{mapState}。mapState是Vuex默认导出的属性,因此您需要对其进行分解。@seblor刚刚用该更改更新了代码。测试仍然失败,但很高兴知道我做错了通过
从“vuex”导入{mapState}。mapState是Vuex默认导出的属性,因此您需要对其进行分解。@seblor刚刚用该更改更新了代码。测试仍然失败,但知道我做错了,这很好。
store.js


import Vue from "vue";
import Vuex from "vuex";
const fb = require("./firebaseConfig.js");

Vue.use(Vuex);

fb.auth.onAuthStateChanged(user => {
  if (user) {
      store.commit('setCurrentUser', user)

      // realtime updates from our posts collection
      fb.usersCollection.onSnapshot(querySnapshot => {
          let userArray = []

          querySnapshot.forEach(doc => {
              let user = doc.data()
              user.id = doc.id
              userArray.push(user)
          })

          store.commit('setUsers', userArray)
      })
  }
})

export const store = new Vuex.Store({
  state: {
    users:[], 
  },
  actions: {
    clearData({ commit }) {
      commit('setUsers', null);
    },
  },
  mutations: {
    setUsers(state, val){
      state.users = val
    }, 
  },
});

SimpleComponentTest.spec.js

import { shallowMount, createLocalVue } from '@vue/test-utils';
import SimpleStore from '../../src/components/SimpleComponent.vue';
import Vuex from 'vuex';

const sinon = require('sinon');
const localVue = createLocalVue();
localVue.use(Vuex);

describe('SimpleComponent.vue', () => {
    it('Is Vue Instance', () => {
        const wp = shallowMount(SimpleComponent, { computed: { users: () => 'someValue' }, localVue });
        expect(wp.isVueInstance()).toBe(true);
    });
});