【发布时间】:2021-11-12 02:02:12
【问题描述】:
我想,我有一个简单的案例。我在我的组件中使用了一个从不同文件导入的函数。我已经模拟了如下所示的函数。我也尝试过添加一个模拟实现,但这也不起作用。如果我在我的原始函数中添加了一条打印语句,它会在我运行测试时出现。如果我理解正确,模拟应该替换原来的。
我尽量让这件事简单明了,所以我不确定我错过了什么。
测试文件:
import AddStoryModal from './AddStoryModal';
import addStory from '../api/add_story';
jest.mock('../api/add_story');
describe('Story tests', () => {
it('makes an API call to add a story', () => {
render(<AddStoryModal />);
const submitButton = screen.getByTestId('add-submit');
fireEvent.click(submitButton);
expect(addStory).toHaveBeenCalled();
});
});
结果:
expect(jest.fn()).toBeCalled()
Expected number of calls: >= 1
Received number of calls: 0
正在测试的组件:
...
import addStory from '../api/add_story';
function AddStoryModal(){
const onFinish = (values) => {
addStory();
};
return (
<>
<Button type="primary" data-testid="add-story" onClick={showModal}>
Create New +
</Button>
<Modal title="Add New Story ..." visible={visible} data-testid='add-story-modal' onCancel={handleCancel} footer={null}>
<Form form={form} layout="vertical" onFinish={onFinish}>
...
<Form.Item>
<Button type="primary" data-testid="add-submit" htmlType="submit">
Submit
</Button>
</Form.Item>
</Form>
</Modal>
</>
);
}
【问题讨论】:
标签: reactjs jestjs react-testing-library