AVA 单元测试入门指南

AVA 是快速简洁的 JavaScript 测试运行器:并发执行、隔离环境、内置断言与快照。本文从项目搭建、第一个测试、多用例、筛选执行到异步测试与 mock 全覆盖。

最佳实践
测试检测与质量验证插画

本文依据官方文档整理,未执行运行验证或性能基准。代码片段展示局部用法,业务函数、数据和环境需按项目补齐;版本与配置以所引文档为准。

直接回答:AVA 是主打速度与简洁的 JS 测试运行器——测试文件内用例默认并发执行(但同文件中的共享状态仍可能互相影响),test() 注册用例、内置 t.is/t.deepEqual/throwsAsync 断言,.only/.skip 控制执行范围,支持异步与快照。Node 版本须符合所安装 AVA 版本的 engines 要求。

搭建与第一个测试

npm init -y
npm pkg set type=module
npm install --save-dev ava
// test.js
import test from 'ava';

test('加法正确', t => {
    t.is(1 + 2, 3);
});

package.json 加 "test": "ava",npm test 即跑。

多用例与筛选执行

test('用例A', t => { ... });
test('用例B', t => { ... });
test.only('只跑这个', t => { ... });   // 调试期聚焦
test.skip('暂时跳过', t => { ... });

npx ava test.js 跑指定文件;npx ava --match='*登录*' 按标题匹配。

异步与 mock

test('接口返回用户', async t => {
    const user = await fetchUser(1);
    t.is(user.name, '张三');
});

test('抛错验证', async t => {
    await t.throwsAsync(() => fetchUser(-1));
});

mock 搭配 sinon 或手写桩——AVA 自身专注运行与断言,mock 生态自由组合。

常见问题(FAQ)

Q:AVA 和 Jest/Vitest 怎么选?
A:AVA 胜在并发隔离与简洁 API;Jest 集成了(快照/mock 全家桶);Vitest 与 Vite 项目天生一体。Vite 项目可优先评估 Vitest;纯 Node 库可按并发模型和所需插件评估 AVA。

Q:并发执行导致用例间干扰?
A:默认隔离的是测试文件(worker thread,可配置独立进程),不是同一文件中的每条用例。文件内并发测试不要修改共享变量;必要时 test.serial,数据库仍须独立资源。

Q:TypeScript 支持?
A:按 AVA 官方 TypeScript 配置选择预编译或兼容的加载方式;tsconfig 本身不是执行器,且运行测试不等于完成类型检查。

官方参考

资料核对日期:2026-09-29。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台