请支持我们的朋友 Vadim Demedes 和乌克兰人民。
AVA 是一个 Node.js 测试运行器,拥有简洁的 API、详细的错误输出、对新语言特性的支持以及线程隔离,让你可以充满信心地进行开发 🚀
关注此仓库并跟进讨论以获取更新。
如果您想贡献代码(问题/PR 等),请阅读我们的贡献指南。
翻译:Español,Français,Italiano,日本語,한국어,Português,Русский,简体中文
为什么选择 AVA?
- 轻量快速
- 简单的测试语法
- 并发运行测试
- 强制编写原子测试
- 没有隐式全局变量
- 包含 TypeScript 定义
- 智能断言
- 每个测试文件的隔离环境
- Promise 支持
- 异步函数支持
- Observable 支持
- 增强的断言消息
- CI 中自动并行测试运行
- TAP 报告器
使用方法
要安装和设置 AVA,请运行:
npm init ava
然后您的 package.json
将如下所示(具体版本可能有所不同):
{
"name": "awesome-package",
"type": "module",
"scripts": {
"test": "ava"
},
"devDependencies": {
"ava": "^5.0.0"
}
}
如果您更喜欢使用 Yarn:
yarn add ava --dev
或者您可以手动安装 ava
:
npm install --save-dev ava
请确保在本地安装 AVA。AVA 无法全局运行。
别忘了如上所示在您的 package.json
中配置 test
脚本。
创建测试文件
在项目根目录下创建一个名为 test.js
的文件。
注意:AVA 的文档假设您正在使用 ES 模块。
import test from 'ava';
test('foo', t => {
t.pass();
});
test('bar', async t => {
const bar = Promise.resolve('bar');
t.is(await bar, 'bar');
});
运行测试
npm test
或使用 npx
:
npx ava
使用 --watch
标志启用 AVA 的监视模式:
npx ava --watch
支持的 Node.js 版本
AVA 支持 Node.js 本身支持的任何主要版本的最新发布版本。在我们的支持声明中了解更多信息。
亮点
智能断言
AVA 为实际值和预期值添加代码摘录和清晰的差异。如果断言中的值是对象或数组,则只显示差异,以减少噪音并聚焦于问题。差异还会进行语法高亮!如果您正在比较字符串(无论是单行还是多行),AVA 都会显示不同类型的输出,突出显示添加或缺少的字符。
清晰的堆栈跟踪
AVA 自动移除堆栈跟踪中不相关的行,让您能更快地找到错误源,如上所示。
CI 中的并行运行
AVA 会自动检测您的 CI 环境是否支持并行构建。每个构建将运行所有测试文件的一个子集,同时确保所有测试都得到执行。有关支持的 CI 环境列表,请参阅 ci-parallel-vars
包。
文档
请查看 docs
目录中的文件:
常见陷阱
我们有一个不断增长的常见陷阱列表,这些是您在使用 AVA 时可能遇到的。如果您遇到任何您认为常见的问题,请在此 issue 中评论。
使用方法
- 测试设置
- TypeScript
- 共享 workers
- 监视模式
- 何时使用
t.plan()
- 向测试文件传递参数
- 在 CI 中拆分测试
- 代码覆盖率
- 端点测试
- 浏览器测试
- 测试 Vue.js 组件
- 使用 Chrome DevTools 调试测试
- 使用 VSCode 调试测试
- 使用 WebStorm 调试测试
- 隔离的 MongoDB 集成测试
- 使用 Puppeteer 测试 Web 应用
- 使用 Selenium WebDriverJS 测试 Web 应用
常见问题
名称如何书写和发音?
AVA,不是 Ava 或 ava。发音为 /ˈeɪvə/
:Ay(如 face、made)V(如 vie、have)A(如 comma、ago)
标题背景是什么?
它是仙女座星系。
并发和并行有什么区别?
支持
相关
- eslint-plugin-ava — AVA 测试的 lint 规则
- @ava/typescript — 测试 TypeScript 项目
- @ava/cooperate — 低级原语,用于实现测试文件之间的协作
- @ava/get-port — 在测试时保留端口