繁体   English   中英

React 测试库 - “messageParent”只能在工作人员内部使用

[英]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,这也有效。

在您的终端中检查您的节点版本是什么:

  1. node -v if (version 12) 升级吧!
  2. nvm install v14.8.0 (类似this或leates one)
  3. nvm 使用 v14.8.0(或任何其他您可能希望安装的高于 12 的版本)

希望这会有所帮助

我有同样的错误,但我能够通过在我的测试文件中导入'@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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM