jestjs - 方法“模拟”意味着在 1 个节点上运行。找到了 0 个
问题描述
我最近使用 ThemeProvider 将我的组件包装在测试中。当我运行测试时,它会引发以下错误
'方法“模拟”意味着在 1 个节点上运行。找到了 0 个
在包装之前它工作正常。我该如何解决这个问题?我在 GitHub 中发现了许多与此类似的问题,我尝试了所有这些方法,但仍然遇到相同的错误。
包装前的代码:
test('handleSelect function called on option select', () => {
const handleSelectSpy = sinon.spy();
wrapper = mount(
<Dropdown handleSelect={handleSelectSpy} options={options} />
);
dropdown = wrapper.find('Dropdown');
dropdown
.find('InputBase')
.find('[role="button"]')
.simulate('click');
expect(true).toBe(true);
});
});
包装后的代码:
test('handleSelect function called on option select', () => {
const handleSelectSpy = sinon.spy();
wrapper = mount(
<ThemeProvider>
<Dropdown handleSelect={handleSelectSpy} options={options} />
</ThemeProvider>,
);
dropdown = wrapper.find('Dropdown');
dropdown
.find('InputBase')
.find('[role="button"]')
.simulate('click');
expect(true).toBe(true);
});
});
错误:下拉菜单 - 完整 DOM 渲染 › 选项选择上调用的 handleSelect 函数“模拟”方法应在 1 个节点上运行。找到了 0 个。
解决方案
.find('InputBase')
如果这是一个组件类名/构造函数,它应该不带引号:
.find(InputBase)
只有 CSS 选择器应该在引号内使用。
推荐阅读
- javascript - 如何在highcharts中添加动态系列
- java - 如何在Java中添加两个列表
- sql - 数据库查询sql
- vue.js - 通过 Nginx 代理服务时,Vue App Routing 不起作用
- reactjs - 如何创建中间件来检查每个页面上的 JWT 令牌(React + Redux)?
- ubuntu - 错误:在 Raspberry Pi 上安装 tensorflow 时,此平台不支持 .whl
- vba - Visio - 如何取消组合形状但保持相同的名称?
- amazon-s3 - 403 禁止访问被拒绝 s3 bucket putobject
- django - 作为我的 Django 应用程序的一部分的长时间运行的连接
- ios - 获取 JSON 数据时发现 nil