Jest测试React组件入门

2018-03-07  本文已影响0人  One_Hund

一、引入

import { shallow, mount, render } from 'enzyme'

二、介绍

三、演示(以shallow render为例)

1.下载demo
demo下载地址

2.配置

3.根目录下新建.babelrc文件,文件内容为:

{
    "presets":[
        "es2015",
        "react"
    ]
}

4.在要测试的组件目录下新建__test__文件夹,并在文件夹里新建**.test.jsx(零配置的前提下),并添加测试

import React from 'react'
import Enzyme,{shallow} from 'enzyme'     //本例子只以shallow(浅渲染,只渲染父组件)为例
import Item from '../../item'     //导入需测试的组件

import Adapter from 'enzyme-adapter-react-16'; //适应React-16
Enzyme.configure({ adapter: new Adapter() })    //适应React-16,初始化

test('Item',()=>{
    const item = shallow(<Item item="test"/>); //传入数据'item'

    expect(item.text()).toBe('test')
    expect(item.hasClass('item')).toBe(true)
    expect(item.hasClass('item-selected')).toBe(false)
})

test('Item Clicked',()=>{
    const item = shallow(<Item item="test" />)

    item.simulate('click')
    expect(item.hasClass('item')).toBe(true)
    expect(item.hasClass('item-selected')).toBe(true)
})

测试(必定出错,请往下看):

出错示例

5.以上出错是因为没屏蔽CSS,因为在index.jsximport './index.css',CSS并不是以模块的形式引入的。所以我们需要自定义Mocks屏蔽CSS,具体如下:

module.exports = {}
"scripts":{...
},
"jest": {
    "moduleNameMapper": {
      "\\.css$": "<rootDir>/__mocks__/styleMock.js"
    }
  },

测试:

成功示例
上一篇 下一篇

猜你喜欢

热点阅读