reactjs - 如何解决错误'expect(onClick).toHaveBeenCalled();'
问题描述
我无法测试对我的反应组件的 2 个子组件的点击,有人知道如何提供帮助吗?
<Container>
<Checkbox
data-testid='Checkbox'
checked={checked}
disabled={disabled}
onClick={handleCheckboxChange}
/>
<Item
data-testid='Label'
disabled={disabled}
onClick={handleCheckboxChange}
>
{label}
</Item>
</Container>
我的测试
it('textLabel enabled', () => {
const onClick = jest.fn();
render(<Checkbox label='item 1' onClick={onClick} />);
userEvent.click(screen.getByTestId(Label'));
expect(onClick).toHaveBeenCalled();
});
我无法测试对项目的点击,它在测试中给出了错误
期望(onClick).toHaveBeenCalled();
解决方案
当你在测试
render(<Checkbox label='item 1' onClick={onClick} />);
这里的标签是'item 1',而不是'Label' 你正在做的是模拟'Label'上的点击事件而不是'Item 1'
所以你需要做
userEvent.click(screen.getByTestId('item 1'));
推荐阅读
- c# - 有没有办法用动画师旋转作为父母的孩子的对象?
- audio - 网络音频直播
- javascript - VueJs 中的反应性问题 - 不必要的更新
- javascript - 基于键将多个数组对象合并为单个数组对象
- python-3.x - Avro 附加不存在模式的记录并保存为 avro 文件?
- django - Django 购物车更新
- c# - 如何将 json 数据添加到 C# 中的标签?(窗口形式)
- spring-boot - 如何将 Spring Initializr 支持添加到 IntelliJ IDEA Community Edition 2020
- c# - 将垂直 DataTable 转换为 C# 模型
- javascript - Angular iOS 文本字段焦点