【发布时间】:2020-05-18 12:21:19
【问题描述】:
我一直在尝试测试我的代码,但没有成功。要测试我的代码,我需要模拟一个模块,但 toHaveBeenCalledTimes 的结果为 0。
我要测试的代码:
import { createStore } from 'redux';
const store = createStore()
const import = (dispatch) => (
data
) => {
validate(data);
dispatch(someMethod(true))
};
const importer = import(store.dispatch);
export { importer };
我写的测试:
import { createStore } from 'redux';
jest.mock('redux', () => ({
createStore: jest.fn(() => ({
dispatch: jest.fn()
})),
}));
describe('store module', () => {
let storeImp;
beforeEach(() => {
jest.resetModules();
jest.resetAllMocks();
storeImp = require('./store');
});
it('should create the store', () => {
expect(createStore).toHaveBeenCalledTimes(1);
});
it('should import a valid datastructure', () => {
const dispatchMock = jest.fn();
createStore.mockImplementation(() => ({
dispatch: dispatchMock,
}));
const data = {
something: "data1"
};
storeImp.importer(data);
expect(dispatchMock).toHaveBeenCalledTimes(1);
});
});
我一直被这个问题困扰。我想测试是否调用了 createStore 和 store.dispatch 方法。
【问题讨论】:
标签: javascript unit-testing redux mocking jestjs