Jest
在仅使用Jest的情况下,Jest是一个单元测试框架,可以与puppeteer一起使用实现e2e测试。
Jest是轻量易用的,Jest 的目标是在大多数 JavaScript 项目中即装即用,无需配置。
用法示例
安装好后,在目录下执行npx jest
,Jest会自动查找目录下的.test.js
文件。(也兼容.spec.js
文件。使用ts-jest
库查找.test.ts
文件)
单元测试
单元测试是指对软件中的最小可测试单元进行测试。
js
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
js
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
快照测试
快照测试通过比较本次运行数据与上次快照数据,一致则通过测试。
js
import renderer from 'react-test-renderer';
import Link from '../Link';
it('renders correctly', () => {
const tree = renderer
.create(<Link page="http://www.facebook.com">Facebook</Link>)
.toJSON();
expect(tree).toMatchSnapshot();
});
Jest在首次执行快照测试方法toMatchSnapshot()
、toMatchInlineSnapshot()
时生成快照,在后续执行时使用快照进行测试。
使用jest -u
、jest --updateSnapshot
来更新快照。
其他测试
在实践中会遇到以下场景,Jest有提供对应解决方案
- 异步测试。支持测试函数返回Promise、使用async/await
- 计时器测试。使用计时器模拟,不用真的等计时
- 模拟模块。不用真的调用模块,比如
node-fetch
发出网络请求 - 操作DOM。使用
jsdom
+jest-environment-jsdom
模拟document,就像在浏览器里一样