被困,无法解决这个问题....我想要做的就是确保我的Vue组件在安装时调用存储操作 . 这是一个简单的测试,它在Vuex商店中模拟getUsers()动作 .

import {shallow, createLocalVue} from '@vue/test-utils';
import UserManager from '../modules/UserManager/components/index.vue';
import Vuex from 'vuex';
import Vuetify from 'vuetify';
import sinon from 'sinon';
import {expect} from 'chai';

const localVue = createLocalVue();

localVue.use(Vuex);
localVue.use(Vuetify);

describe('UserManager', () => {

    let store, actions;

    actions = {
        getUsers: sinon.stub()
    };

    beforeEach(() => {
        store = new Vuex.Store({
            actions
        });
    });

    it('calls getUsers action', () => {
        const wrapper = shallow(UserManager, {store, localVue});
        console.log("DEBUG: Testing that action was called");
        expect(actions.getUsers.calledOnce).to.equal(true);
    });
});

getUsers动作只是提交一个简单的变异:

getUsers: ({state, getters, commit, dispatch}) => {

    console.log("DEBUG: getUsers action called");

    return new Promise((resolve, reject) => {

        commit('setUsersLoading', true);

        resolve();
    });
},

运行测试时,我们得到:

1) UserManager
DEBUG: getUsers action called
DEBUG: Testing that action was called
  calls getUsers action:

  AssertionError: expected false to equal true
  + expected - actual

  -false
  +true

为什么这会失败?

奖金问题:当我在getUsers动作中添加异步动作(例如axios请求)时,如何确保动作getUsers()已完成,即如何在开始声明任何内容之前检查从动作返回的保证是否已解决?