首页 > 解决方案 > 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');
  })
})

标签: reactjsjestjsenzyme

解决方案


正如错误告诉你的那样,你需要为酶配置一个适配器,如下所示:

// 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/


推荐阅读