[TOC]
# 介绍
**测试** 是应用生产过程中不可缺少的一个环节,开发人员在编码时总有考虑不周全或者出错的情况,而测试则是通过对比实际结果与预期结果来找出问题和缺陷,从而确保软件的质量。
对于**任何想要高质量的项目来说,测试和调试都是非常重要的**。不幸的是,许多开发人员并不关心测试(单元测试),因为他们认为这将降低开发的速度,并且有些开发人员将其留到项目的末尾。根据我个人的经验,我可以说从项目开始进行测试将节省您的时间,因为到最后,您需要修复的bug会更少。
React 使用 Jest 测试 components, containers, actions, 和 reducers。
在下面的章节中,我们还将学习如何调试 React/Redux 应用程序。
# React组件的测试
测试React组件我们采用 Enzyme 工具库,它提供3种组件渲染方式:
1. **shallow**:不会渲染子组件(推荐使用这种测试,子组件再使用这种测试)
2. **mount**: 渲染子组件,同时包含生命周期函数如 `componentDidMount`
3. **render**: 渲染子组件,但不会包含生命周期,同时可用的API也会减少比如 `setState()`
一般情况下用 `shallow` 和 `mount` 的情况比较多。
# redux 测试
# 测试 redux-saga
# 测试 hooks
# 工具
对于一些测试情况,可能会用到的工具
[redux-mock-store](https://codeday.me/bug/20190321/796372.html)
[nock](https://github.com/nock/nock) -- HTTP server mocking and expectations library for Node.js
[Sinon](https://sinonjs.org/) -- Standalone and test framework agnostic JavaScript test spies, stubs and mocks
# 示例
[deepfunc/react-test-demo](https://github.com/deepfunc/react-test-demo)
[testing-library](https://testing-library.com/)
[Testing React with Enzyme and Jest](https://javascriptplayground.com/testing-react-enzyme-jest/)
[kentcdodds‘s Blog](https://kentcdodds.com/)