【发布时间】:2020-11-12 11:36:37
【问题描述】:
我正在尝试完全覆盖此函数,但似乎无法模拟函数,以便它调用 onSuccess 回调
代码
export const handleDelete = (action) => {
const { id, type, actions } = action;
actions.dispatch(
actions.openDialog(`delete${type}`, Dialog, {
onSuccess: () => {
actions.dispatch(actions.thunk(id));
actions.notify(`${type} deleted`, {
variant: 'success',
});
},
body: `Are you sure you want to delete this ${type}?`,
title: `Delete ${type}`,
confirm: 'Delete',
cancel: 'Cancel',
danger: true,
})
);
};
单元测试:
it('should handle delete', () => {
const mockDispatch = jest.fn();
const mockOnSuccess = jest.fn();
const mockOpenDialog = jest.fn(() => ({
onSuccess: mockOnSuccess,
}));
const mockAction = {
id: 1,
type: 'example',
actions: {
dispatch: mockDispatch,
openDialog: mockOpenDialog,
},
};
handleDelete(mockAction);
expect(mockDispatch).toHaveBeenCalled();
expect(mockOpenDialog).toHaveBeenCalled();
});
覆盖范围:
【问题讨论】:
标签: javascript unit-testing jestjs mocking