被困,无法解决这个问题....我想要做的就是确保我的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()已完成,即如何在开始声明任何内容之前检查从动作返回的保证是否已解决?