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

nap*_*499 6 unit-testing reactjs jestjs react-testing-library jest-dom

我正在使用 RTL 测试 React 组件,每次运行测试时,我都会得到,

"messageParent" can only be used inside a worker
Run Code Online (Sandbox Code Playgroud)

**这是代码

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);
  });
});
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助将不胜感激。

小智 17

我遇到了同样的问题,它是由调用toBe()toEqual()HTMLElement 引起的。所以你最有可能的罪魁祸首就在这里,因为getByTestId返回一个 HTMLElement:

expect(getByTestId('dateRange')).toBe(dateRange);

我通过测试元素的文本内容解决了我的问题。

expect(getByTestId('dateRange')).toHaveTextContent('...');


Joh*_*ohn 0

嗨,我花了一些时间谷歌搜索后遇到了同样的问题,我发现了这个:github问题论坛

事实证明,这个问题是由node12版本引起的,我将我的版本降级到版本10,一切正常,我也升级到版本14,这也有效。

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

  1. node -v if(版本12)升级它!
  2. nvm install v14.8.0(类似这个或leates的)
  3. nvm 使用 v14.8.0(或您可能希望安装 12 以上的任何其他版本)

希望这有帮助