react酶检测文库

IT技术 reactjs
2021-05-06 01:38:05

我是react测试库的新手,我热衷于使用酶。当我浏览文档时,我发现 create-react-app 允许直接包含第三方测试库。我尝试了以下方法来包含酶,但没有成功。这是我尝试过的,但在我的 app.test.js 中不起作用。

import React from 'react';
import {configure, shallow} from 'enzyme'
import AboutPage from './AboutPage';

   describe('About us',() =>{
      it('About us content validation', ()=>{
      const wrapper = shallow(<AboutPage />);
      const textHeader = <p className="value-col-heading">EMPATHY</p>;
     expect(wrapper.contains(textHeader)).toEqual(true);
     });
    });

我收到以下错误:

Enzyme Internal server error : Enzyme expects an adapter...
2个回答

我可以看到您的错误很明显,因为您没有为酶设置任何适配器。Enzyme 是一个用于 React 的 javaScript 测试实用程序,它可以更轻松地断言、操作和遍历 React 组件的输出。除此之外,它需要一个适配器来配置它,如下所示:你可以试试这个,看看它是否有效:

import React from 'react';
import {configure, shallow} from 'enzyme'
import Adapter from 'enzyme-adapter-react-16' // require your adapter from 
 here
import AboutPage from './AboutPage';
configure({adapter : new Adapter()}); // use configure to pass your adapter 
 object

describe('About us',() =>{
    it('About us content validation', ()=>{
        const wrapper = shallow(<AboutPage />);
        const textHeader = <p className="value-col-heading">EMPATHY</p>;
        expect(wrapper.contains(textHeader)).toEqual(true);
    });
})

正如我们在酶 github 的自述文件中(在安装部分), 您需要安装酶以及与 react 版本对应的 Adapter。在您的情况下,您需要通过在应用程序的根目录中运行以下代码来安装酶适配器react 16:

npm i --save-dev enzyme-adapter-react-16

之后,您需要配置酶以使用您希望它使用的适配器。为此,请像这样修改您的 app.test.js:

import React from 'react';
import Enzyme, {configure, shallow} from 'enzyme';
import AboutPage from './AboutPage';
import Adapter from 'enzyme-adapter-react-16';

Enzyme.configure({ adapter: new Adapter() });

describe('About us',() =>{
  //what ever that was 
});