reactjs - Enzyme 内部错误:Enzyme 需要配置适配器,但没有找到
问题描述
试图让登录单元测试正常工作,但它一直给我错误
Enzyme 内部错误:Enzyme 需要配置适配器,但没有找到。要配置适配器,您应该Enzyme.configure({ adapter: new Adapter() })
在使用任何 Enzyme 的顶级 API 之前调用,其中Adapter
与当前正在测试的库对应的适配器在哪里。例如:
从 'enzyme-adapter-react-15' 导入适配器;
这是我的单元测试
import React from 'react';
import { shallow, mount, render } from 'enzyme';
import Login from './components/login.js';
describe('Login Test Suite', () => {
it('should render the form', () => {
const wrapper = shallow(<Login />);
expect(wrapper.find('form.login').exists()).toBe(true);
expect(wrapper.find('#Username').length).toEqual(1);
expect(wrapper.find('#password').length).toEqual(1);
})
})
describe('Username Test Suite', () => {
it('should change the state of the Login component', () => {
const wrapper = shallow(<Login />);
wrapper.find('#Username').simulate('blur',
{
target: { name: 'Username', value: 'adastest' }
});
expect(wrapper.state('Username')).toEqual('adastest');
})
})
describe('Password Test Suite', () => {
it('should change the state of the Login component', () => {
const wrapper = mount(<Login />);
wrapper.find('#password').simulate('blur',
{
target: { name: 'password', value: 'adastest' }
});
expect(wrapper.state('password')).toEqual('adastest');
})
})
解决方案
正如错误告诉你的那样,你需要为酶配置一个适配器,如下所示:
// setup file
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
configure({ adapter: new Adapter() });
让我们说/src/tests/setupTests.js
,然后jest.config.json
像这样告诉 Jest:
{
"setupFiles": [
"<rootDir>/src/tests/setupTests.js"
]
}
然后通过指定配置文件运行 jest:
jest --config=jest.config.json
这一切都在安装文档中: https ://airbnb.io/enzyme/docs/installation/
推荐阅读
- python - 具有回归量时的 FBprophet 未来预测
- javascript - 修复了干扰平滑滚动(React-Scroll)的 div 高度
- django - 我在部署 django 项目时遇到了一些问题
- asynchronous - 为什么 jest.advanceTimersByTime() 不适用?
- node.js - node.js 语法错误:输入意外结束
- reactjs - Reactjs useState 不改变布尔状态,也不在点击时渲染子组件
- python - 在 Python 中将新数据行添加到 DataFrame 的最有效/最快的方法是什么
- linux - 读取用户输入时禁止显示错误消息
- apache-spark - Databricks 架构执行问题
- javascript - 切换 html 按钮,具体取决于 textarea 是填充还是空