jest Enzyme 文档 为什么要写测试

单元测试(unit testing)指的是以软件的单元(unit)为单位,对软件进行测试。单元可以是一个函数,也可以是一个模块或组件。它的基本特征就是,只要输入不变,必定返回同样的输出。

单元测试的步骤如下

准备所有的测试条件
it('test a')
it('test b')
调用(触发)所要测试的函数
it('test a', ()=>{/*expect*/})
it('test b', ()=>{/*expect*/})
验证运行结果是否正确
npm t
还原被修改的记录

开发模式

TDD

先写好测试,然后再根据测试完成开发

BDD

针对行为写测试,软件应该怎样运行。

安装环境

yarn create react-app my-app
yarn run eject
yarn
yarn add enzyme enzyme-adapter-react-16 --dev

npm t 启动测试

浅层渲染 api

import React, { Component, Fragment } from 'react';
import logo from './logo.svg';
import './App.css'; class App extends Component {
state = {
v: 'welcome to react test.'
}
render() {
const { v } = this.state;
return <Fragment>
<h1>{v}</h1>
<button onClick={this.handleChangeV}>add</button>
</Fragment>
} handleChangeV = e => {
this.setState({
v: 'ok'
})
}
} export default App;
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import Enzyme, {shallow} from 'enzyme';
import Adapter from 'enzyme-adapter-react-16'; Enzyme.configure({adapter: new Adapter()})
const l = console.log
describe('<App /> 组件测试', () => { // 测试套件
let app; beforeAll(() => {
app = shallow(< App />)
}) it('exists h1', () => { // 测试用例
// 断言组件中存在 h1元素
expect(app.exists('h1')).toBe(true) // 断言
}); it('only one h1', () => {
// 断言只存在一个 h1袁元素
expect(app.find('h1').length).toBe(1)
}) it('check h1 content', () => {
expect(app.find('h1').html()).toContain('welcome to react test.')
}) it('click change', () => {
app.find('button').simulate('click') // 模拟点击事件
expect(app.find('h1').html()).toContain('ok')
// expect(app.find('h1').html()).toContain('hello') Error })
})

最新文章

  1. 帆布指纹识别(canvas fingerprinting)
  2. paper 124:【转载】无监督特征学习——Unsupervised feature learning and deep learning
  3. HBase配置项详解
  4. Vue自定义过滤器
  5. php--.prop()
  6. 在Array原型链上扩展remove,contain等方法所遇到的坑
  7. ssh 应用
  8. thinkphp做搜索功能
  9. 转git取消commit
  10. Kettle日志中BootFeaturesInstaller错误
  11. Java开发知识之Java中的集合上List接口以及子类讲解.
  12. [物理学与PDEs]第3章第4节 磁流体力学方程组的数学结构
  13. 一、ESP8266入门(基于LUA开发)
  14. yum 安装报错 File &quot;/usr/bin/yum&quot;, line 30 except KeyboardInterrupt, e:
  15. python常见的数据结构
  16. 利用matlab写一个简单的拉普拉斯变换提取图像边缘
  17. Programming internal SRAM over SWD
  18. 【C#】C#项目如何获得项目的根目录
  19. UE4 游戏中csv配置文件使用
  20. 从源码角度分析 Kotlin by lazy 的实现

热门文章

  1. P1663 山
  2. 关于MinGW64的调试
  3. 基于Vue+ElementUI架构的前端国际化解决方案
  4. 如何获得svn的版本号信息?
  5. Hyperbase常用SQL
  6. 最小生成树(MST)Prim算法和Kruskal算法
  7. Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math
  8. hdu 6822 Paperfolding 规律+排列组合+逆元
  9. CodeForces - 916C 思维
  10. Network UVA - 315 无向图找割点