Reactjs &引用;ReferenceError:waitForElement未定义";测试react.js时
我正在用Jest和react测试库测试一个调用异步函数的组件。当我运行测试时,我得到一个错误Reactjs &引用;ReferenceError:waitForElement未定义";测试react.js时,reactjs,jestjs,babeljs,react-testing-library,Reactjs,Jestjs,Babeljs,React Testing Library,我正在用Jest和react测试库测试一个调用异步函数的组件。当我运行测试时,我得到一个错误ReferenceError:waitForElement未定义 以下是我尝试过的: 没有.babelrc中的useBuiltins选项,包括app.test.jsx文件顶部的@babel/polyfill以及webpack.config.js中的条目数组中的@babel/polyfill。我从测试运行中得到错误ReferenceError:waitForElement未定义,但应用程序编译成功 使用us
ReferenceError:waitForElement未定义
以下是我尝试过的:
.babelrc
中的useBuiltins
选项,包括app.test.jsx
文件顶部的@babel/polyfill
以及webpack.config.js
中的条目数组中的@babel/polyfill
。我从测试运行中得到错误ReferenceError:waitForElement未定义,但应用程序编译成功
useBuiltIns:'entry'
,包括@babel/polyfill
位于app.test.jsx
文件顶部,在webpack.config.js
中的条目数组中不使用@babel/polyfill
。我得到找不到模块'core js/modules/es6.array.every'from'app.test.jsx'
,应用程序无法编译useBuiltIns:'entry'
,在app.test.jsx
文件的顶部不包括@babel/polyfill
,在webpack.config.js
的条目数组中使用@babel/polyfill
。我从测试运行中得到错误ReferenceError:waitForElement未定义,并且应用程序无法编译
import '@babel/polyfill';
import React from 'react';
import { render, fireEvent, cleanup } from 'react-testing-library';
import AppContainer from '../components/AppContainer';
test('State change', async () => {
const { debug, getByLabelText, getByTestId, getByText } = render(<AppContainer />);
fireEvent.change(getByLabelText('testfield'), { target: { value: 'Hello' } });
fireEvent.click(getByTestId('button'));
await waitForElement(() => getByText('return value'));
debug();
});
在app.test.jsx中测试
import '@babel/polyfill';
import React from 'react';
import { render, fireEvent, cleanup } from 'react-testing-library';
import AppContainer from '../components/AppContainer';
test('State change', async () => {
const { debug, getByLabelText, getByTestId, getByText } = render(<AppContainer />);
fireEvent.change(getByLabelText('testfield'), { target: { value: 'Hello' } });
fireEvent.click(getByTestId('button'));
await waitForElement(() => getByText('return value'));
debug();
});
.babelrc
{
"presets": ["@babel/preset-env", "@babel/preset-react"],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
]
]
}
我希望
waitForElement
函数等待“返回值”文本出现在第二个文本字段中,然后debug()
函数打印页面html代码。相反,我得到了上面提到的错误。好的,我解决了这个问题。我缺少dom测试库
依赖项
这是可行的解决方案
- 安装dom测试库:
npm安装--保存开发人员dom测试库
- 在
importapp.test.jsx
和waithForElement
:@babel/polyfill
- 代码的其余部分与上面的案例1相同
react测试库导入waitForElement
:
import { render, waitForElement } from 'react-testing-library'
不需要安装dom测试库
,因为RTL已经依赖它了