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

问题描述

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

"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 issues forum

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

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

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

希望这会有所帮助