# @atom/babel-plugin-chai-assert-async 中文文档

规范地址：https://npmcn.com/package/%40atom/babel-plugin-chai-assert-async/

版本：1\.0\.0
npm 元数据更新时间：2022-04-04T16:14:25.431Z
中文译文更新时间：2026-11-07T03:30:43.974Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40atom/babel-plugin-chai-assert-async
原文对照：https://npmcn.com/package/%40atom/babel-plugin-chai-assert-async/?lang=original
项目主页：https://github.com/atom/babel-plugin-chai-assert-async#readme
源码仓库：https://github.com/atom/babel-plugin-chai-assert-async

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：10.8 kB，7 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- peer 依赖：@babel/core 7\.x，test-until 1\.x
- 首次发布：2019-02-25T21:08:56.596Z
- 最新版本发布：2019-02-25T21:31:00.554Z
- 近 30 天下载量：2094（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 0 个）

## 中文简介

等待 profile.async( )

## 安装

```sh
npm install @atom/babel-plugin-chai-assert-async
```

也可以使用：`pnpm add @atom/babel-plugin-chai-assert-async`、`yarn add @atom/babel-plugin-chai-assert-async`、`bun add @atom/babel-plugin-chai-assert-async`

## README

# 贝贝-插孔-柴-塞-辛克

变换 `assert.async.*` 调用 `test-until` 表达式,当断言通过时解决,保留错误信息,以弥补失败的断言.

[![Build Status](https://travis-ci.org/atom/babel-plugin-chai-assert-async.svg?branch=master)](https://travis-ci.org/atom/babel-plugin-chai-assert-async)

## 安装

假设你 [已经使用 Babel](http://babeljs.io/docs/setup/),安装 Babel 插件 _和同伴依赖关系_ 使用您选择的软件包管理器 :

```sh
$ npm install @atom/babel-plugin-chai-assert-async test-until
```

## 使用量

### 通过 `.babelrc`

**.babelrc 图像**

```json
{
  "plugins": ["@atom/babel-plugin-chai-assert-async"]
}
```

### 通过 CLI

```sh
$ babel --plugins @atom/babel-plugin-chai-assert-async script.js
```

### 节点 API

```javascript
require("babel-core").transform("code", {
  plugins: ["@atom/babel-plugin-chai-assert-async"]
});
```

## 细节

在测试中,测试同步设定的值,或者等待条件真实后再继续测试,有时是有用的. 以下是一个曲折的例子:

```javascript
function setValueAsync(obj) {
  setTimeout(() => obj.val = 42, 100)
}

describe('setValueAsync', function() {
  it('sets a value asynchronously', function() {
    const obj = {val: 0}
    setValueAsync(obj)
    assert.equal(obj.val, 42) // will fail
  })
})
```

测试会失败,因为 `obj.val` 不等于 `42` 在进行断言时.

我们可以用 [图书馆之类的 `test-until`](https://www.npmjs.com/package/test-until) 确保测试不会持续到 `obj.val` 显示为相等 `42`这儿有个莫查的例子, `async`编号 :`await`

```javascript
import until from 'test-until'
// ....
it('sets a value asynchronously', function() {
  const obj = {val: 0}
  setValueAsync(obj)
  await until(() => obj.val === 42)
})
```

然而,在从 `assert.equal` 此测试的版本到 `await until` 版本,我们失去了一些信息。 特别是,更难知道 我们究竟在测试什么,如果 `until` 表达式时断时续,我们得到一个非常通俗的错误信息,如"等待出事的时间"而不是"预期的obj.val到等同42"等有用的信息.

这个转变可以让你转换一些像 `assert.equal(obj.val, 42)` 改为等值 `until` 书面表达式 `assert.async.equal(obj.val, 42)`数字 :

```javascript
function setValueAsync(obj) {
  setTimeout(() => obj.val = 42, 100)
}

describe('setValueAsync', function() {
  it('sets a value asynchronously', async function() {
    const obj = {val: 0}
    setValueAsync(obj)
    await assert.async.equal(obj.val, 42)
  })
})
```

在这种情况下,如果async断言失败,则会保留"预期obj.val到等同42"等原始错误消息.

如果你想通过一个暂停 `test-until`,您可以将其指定为参数 `async`数字 :

```javascript
await assert.async(100).equal(obj.val, 42)
```

## 实例

**基础**

单位

```js
async function test() {
  await assert.async.equal(thing, other);
}
```

出来

```js
"use strict";

import until from 'test-until';

async function test() {
  await until(async function (fail) {
    try {
      assert.equal(thing, other);
      return true;
    } catch (err) {
      return fail(err);
    }
  });
}
```

**有明显的超时**

单位

```js
async function test() {
  await assert.async(500).equal(thing, other);
}
```

出来

```js
"use strict";

import until from 'test-until';

async function test() {
  await until(async function (fail) {
    try {
      assert.equal(thing, other);
      return true;
    } catch (err) {
      return fail(err);
    }
  }, 500);
}
```

## 常见问题

### @atom/babel-plugin-chai-assert-async 是什么？

等待 profile\.async\( \)

### 如何安装 @atom/babel-plugin-chai-assert-async？

在项目目录运行 npm install @atom/babel-plugin-chai-assert-async，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@babel/core（7\.x）、test-until（1\.x）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @atom/babel-plugin-chai-assert-async 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/atom\_\_babel-plugin-chai-assert-async 是否存在。

### @atom/babel-plugin-chai-assert-async 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @atom/babel-plugin-chai-assert-async 可以商用吗？

@atom/babel-plugin-chai-assert-async 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @atom/babel-plugin-chai-assert-async 的下载量有多少？

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

### @atom/babel-plugin-chai-assert-async 还在维护吗？

最新版本 1\.0\.0 发布于 2019/02/26（7 年前）；至今共发布 2 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/02/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

