Skip to content
导航

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 -ujest --updateSnapshot来更新快照。

其他测试

在实践中会遇到以下场景,Jest有提供对应解决方案

  • 异步测试。支持测试函数返回Promise、使用async/await
  • 计时器测试。使用计时器模拟,不用真的等计时
  • 模拟模块。不用真的调用模块,比如node-fetch发出网络请求
  • 操作DOM。使用jsdom+jest-environment-jsdom模拟document,就像在浏览器里一样

参考资料