问题描述
我正在使用 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 版,这也有效。
在你的终端中检查你的节点版本:
- node -v if(版本 12)升级它!
- nvm install v14.8.0(类似这样或leates之一)
- nvm 使用 v14.8.0(或您可能希望安装的任何其他 12 版本以上的版本)
希望这会有所帮助