在'create-react-app'应用程序中使用Enzyme对React / Redux进行单元测试

时间:2018-05-09 01:50:51

标签: reactjs jestjs enzyme

我想对我使用“create-react-app”软件包创建的应用程序进行一些基本的单元测试。我相信它已经安装了Jest。

我的应用程序中有一些基本的redux代码。

我想测试一下:

  1. 它渲染主要组件(App.js)而不会崩溃

  2. 点击以显示下一项功能

  3. 我使用“npm install --save-dev enzyme”和“enzyme-adapter-react-15”安装了酶。

    这是我的代码:

    import React from 'react';
    import ReactDOM from 'react-dom';
    import {App} from './App';
    import { shallow, mount, render, configure } from 'enzyme';
    import Adapter from 'enzyme-adapter-react-15';
    
    configure({ adapter: new Adapter() });
    
    describe('A test for App component', () => {
     let wrapper
    
     beforeEach(()=>{
       wrapper = shallow(<App />);
     })
    
     it('should render App Component', () => {
       expect(wrapper).to.have.length(1)
     })
    })
    

    我无法通过测试开始工作。错误消息:

    TypeError: Cannot read property 'length' of undefined
    

    TypeError: Cannot read property 'have' of undefined
    

    我认为我做错了一些基本的事情。

    任何帮助表示赞赏!!!

2 个答案:

答案 0 :(得分:1)

您正在使用Jest的expect功能。您需要从chai明确声明导入。

它看起来像:

import { expect } from 'chai'
it('should render App Component', () => {
    expect(wrapper).to.have.length(1)
})

此外,您可以将文件setupTests.js添加到/src,而不是为每个测试添加适配器配置,它将适用于所有测试: - )

答案 1 :(得分:1)

您可能从酶的网站上的示例中复制了它,该网站使用了chai。您尝试测试的内容相当于:

it('should render App Component', () => {
   expect(wrapper).toHaveLength(1)
})