@ava/cooperate

中文文档
1.0.0发布于 2021/11/04MITTypeScriptES Module近 30 天下载 4995

启用 AVA 测试文件之间合作的插件

中文使用文档
文档目录4 节
  1. 使用量
  2. 锁定
  3. 保留
  4. 司马发

@ ava/ 合作

AVA 4 插件,可以实现测试文件之间的合作.

将它与AVA本身一起安装为发展依赖:

npm install --save-dev @ava/cooperate

使用量

合作是在共同背景下进行的:

import {SharedContext} from '@ava/cooperate';

const context = new SharedContext('my-context');

在所有测试文件中,使用同一标识的上下文(此处: my-context)为共享.

锁定

您可以在上下文中创建锁定 :

const lock = context.createLock('my-lock');

需要获得一个锁。 这是同步的 :

const release = await lock.acquire();

不再需要时释放锁:

release();

锁在测试完成后自动释放 .

使用 acquireNow() 获取锁,或失败:

const release = await lock.acquireNow();

如果锁无法获取, 将会用一个 LockAcquisitionError数字 :

try {
  await lock.acquireNow();
} catch (error) {
  // error instanceof LockAcquisitionError
  // error.name === 'LockAcquisitionError'
  // error.lockId === 'my-lock'
}

保留

可以保留出大整数,数字和字符串等原始值. 一旦保留,其他测试文件都无法保留这些相同的值(如果使用正确的共享上下文). 测试完成后将释放保留值 .

const reserved = await context.reserve(1, 2, 3);
// `reserved` will be an array containing those values that could be reserved.
// It could be empty.

司马发

您可以创建 计数 semapore 在共同背景下:

const initialValue = 3; // Must be a non-negative integer.
const semaphore = context.createSemaphore('my-semaphore', initialValue);

在同一背景下,必须创建具有相同ID的母体并具有相同的初始值. 由不同值所创建的司马磷是无法使用的. 他们的方法会以 SemaphoreCreationError。 。 。 .

司马磷有两种方法: acquire() 财务报告和审定财务报表 acquireNow()启用 acquire() 以降低司马发的价值。 如果Semaphore的值变成负值,相反 acquire() 等到司马彪的值足够高.

const semaphore = context.createSemaphore('my-semaphore', 3);
const release = await semaphore.acquire();

acquire() 返回一个函数, release(),它使semaphore的数值递增 与获得的金额相同.

司马发是 管理: 如果你不打电话 release()测试人员离开时会自动运行 任何待定 acquire() 此时也会从队列中移除呼叫.

acquireNow() 喜欢 acquire()但是如果不能立即解冻, acquireNow() 以 SemaphoreDownError 而不是等着.

司马发是 加权。 。 。 . acquire() 财务报告和审定财务报表 acquireNow() 接受非负整数,默认为 1,通过该数值递减或递增:

await semaphore.acquire(0);
await semaphore.acquireNow(2);

您也可以通过一个金额到 release() 一次只释放部分获取:

const release = await semaphore.acquire(3); // Decrements the semaphore by 3
release(1); // Increments the semaphore by 1
release(); // Increments the semaphore by the remaining 2

acquire() 以FIFO顺序调用求解。 如果当前值是 1,而一个电话试图获取 2,随后 acquire() 即使他们想得到 1。 。 。 .

acquireNow() 如果可能,立即跳过队列和减速.

低级别、无人管理

你可以建立一个低级的, 未管理 semaphore 没有任何自动释放行为。 相反,你需要增加代码中的分母.

const initialValue = 3; // Must be a non-negative integer.
const semaphore = context.createUnmanagedSemaphore('my-semaphore', initialValue);

管理不周的司马发不得使用与管理不周的司马发相同的ID,在同一上下文中. 具有相同ID的司马磷必须创建相同的初始值. 管理不当和管理不善的分泌物,或创造的有不同价值的分泌物是无法使用的。 他们的方法会以 SemaphoreCreationError。 。 。 .

无所管理之分有三种方法. down() 财务报告和审定财务报表 downNow() 降低数值和 up() 递增:

await semaphore.down(0);
await semaphore.downNow(2);
await semaphore.up(); // `amount` defaults to 1

喜欢 acquire() 财务报告和审定财务报表 acquireNow() 管理下分母的方法, down() 等待 semaphore 的值至少是请求的数量,同时 downNow() 拒绝方式 SemaphoreDownError 如果值不能立即减少.

这些未经管理的semaphores不会在测试工人出厂时释放出"获得"的金额.

版本与发布记录

@ava/cooperate 共发布 4 个版本,首次发布于 2020/09/27;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.0latest2021/11/045 年前
0.2.02021/06/205 年前
0.1.12020/10/186 年前
0.1.02020/09/276 年前

关于 @ava/cooperate 的常见问题

@ava/cooperate 是什么?

启用 AVA 测试文件之间合作的插件

如何安装 @ava/cooperate?

在项目目录运行 npm install @ava/cooperate,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:ava(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@ava/cooperate 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ava/cooperate 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ava/cooperate 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=12.22 <13 || >=14.17 <15 || >=16.4 <17 || >=17。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ava/cooperate 可以商用吗?

@ava/cooperate 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ava/cooperate 的下载量有多少?

根据 npm 官方下载统计,@ava/cooperate 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,995 次,日均约 167 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ava/cooperate 还在维护吗?

最新版本 1.0.0 发布于 2021/11/04(5 年前);至今共发布 4 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/09/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。