[英]React Testing Library - "messageParent" can only be used inside a worker
我正在使用 RTL 测试一个反应组件,每次我运行测试时,我都会得到,
"messageParent" can only be used inside a worker
**这是代码
describe('Header', () => {
it('validates header component is rendered', () => {
const { getByTestId } = render(<Header patientName="Jake Bland" />);
expect(getByTestId('patient-name')).toHaveTextContent(/^Jake Bland$/);
expect(getByTestId('dateRange')).toBe(dateRange);
});
});
对此的任何帮助将不胜感激。
我遇到了同样的问题,它是由在 HTMLElement 上调用toBe()
或toEqual()
引起的。 所以你最有可能的罪魁祸首在这里,因为getByTestId
返回一个 HTMLElement:
expect(getByTestId('dateRange')).toBe(dateRange);
我通过测试元素的文本内容来解决我的问题。
expect(getByTestId('dateRange')).toHaveTextContent('...');
嗨,我花了一些时间谷歌搜索后遇到了同样的问题,我发现了这个: github 问题论坛
事实证明,这个问题是由 node12 版本引起的,我将我的版本降级到版本 10,一切正常,我也升级到版本 14,这也有效。
在您的终端中检查您的节点版本是什么:
希望这会有所帮助
我有同样的错误,但我能够通过在我的测试文件中导入'@testing-library/jest-dom'
来修复它,如下所示:
import '@testing-library/jest-dom'
原来,上面的 package 是 '@testing-library/react' 的 peerDependency。 因此错误。
我在测试以查看<select>
是否有正确数量的选项时遇到了这个错误,当使用这个时:
expect(container.querySelectorAll('option')).toBe(2);
@testing-library/react 必须尝试做一些奇怪的事情来获取 HTML 集合的长度,我有。 所以我在查询中添加了.length
:
expect(container.querySelectorAll('option').length).toBe(2);
一切都好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.