跳至主内容

Jest 13.0:Flow 与 REPL

· 3 分钟阅读
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

今天我们非常高兴地宣布 Jest 的下一个主要版本。我们对 Jest 进行了重大改进,这些变化将使您和 Facebook 的所有 JavaScript 测试基础设施受益。最重要的是,在 Facebook 最近的 Jest 黑客马拉松期间,我们为所有 Jest 代码添加了静态类型。十五位开发者日夜奋战,为 Jest 添加了 Flow 类型支持并实现了新功能。Flow 类型主要带来两大价值:首先,我们坚信代码是用来阅读的。大多数情况下,代码只编写一次,但会被数十人在数年间反复阅读。为项目添加静态类型有助于代码文档化,并能解释 Jest 的部分架构设计。其次,静态类型使维护更加轻松,让我们能够更自信地重构 Jest 的各个模块,而无需担心破坏性变更。

Flow 项目在 Facebook 内部经历了长足发展,已成功应用于我们的多个框架和几乎所有产品代码。它的采用过程可以完美并行化——只需逐个文件添加类型标注,直到代码库大部分完成类型化。此时 Flow 就能提供真正的价值,帮助指导大规模变更。通过这种方式,我们发现了很多细微的边界情况和错误。

借助 lerna,我们持续推进 Jest 项目的模块化。仅需简单的配置更新,Flow 和 lerna 现在已能完美协同工作。将 Jest 拆分为独立包帮助我们重新思考模块边界,并使我们能独立发布实用的功能包jest-runtimejest-repl CLI 工具现在允许您在沙盒化的 Jest 环境中运行脚本,直接从命令行执行和调试应用。这对于采用 Facebook @providesModule 模块规范的项目尤其有用。只需安装 jest-repl 并在您通常运行测试的目录执行即可开始使用!我们还发布了 jest-changed-files 包,用于在 git 或 hg 版本控制中查找变更文件,这是开发者工具的常见需求。

新增与优化功能

  • 新增通知插件,使用 --notify 时显示测试运行通知

  • 新增 browser 配置选项,在为客户端应用编写测试时正确解析含 browser 字段的 package.json npm 包

  • 优化“未找到测试”提示信息,现在会报告发现的测试及其过滤方式

  • 新增 jest.isMockFunction(jest.fn()) 用于检测模拟函数

  • 改进测试报告输出格式,并在运行大量测试时添加失败测试摘要

  • 支持通过 jest.mock('Module', implementation, {virtual: true}) 模拟虚拟模块

  • 移除 .haste_cache 文件夹,Jest 现在使用操作系统首选临时文件位置

  • 在详细模式中新增单例测试耗时统计

  • 新增 Jest 快照录制功能,我们将很快发布专门博客介绍此特性

最后,我们完成了由 Matthew Johnston 操刀的网站全面改版,并新增了 Jest 与 webpack 集成文档。愉快地使用 Jest 吧!