@atom/babel-plugin-chai-assert-async

中文文档
1.0.0发布于 2019/02/26MITCommonJS近 30 天下载 2094

等待 profile.async( )

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 通过 .babelrc
  4. 通过 CLI
  5. 节点 API
  6. 细节
  7. 实例

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

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

Build Status

安装

假设你 已经使用 Babel,安装 Babel 插件 和同伴依赖关系 使用您选择的软件包管理器 :

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

使用量

通过 .babelrc

.babelrc 图像

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

通过 CLI

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

节点 API

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

细节

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

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 确保测试不会持续到 obj.val 显示为相等 42这儿有个莫查的例子, async编号 :await

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)数字 :

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数字 :

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

实例

基础

单位

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

出来

"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);
    }
  });
}

有明显的超时

单位

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

出来

"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 共发布 2 个版本,首次发布于 2019/02/26;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.0.0latest2019/02/267 年前
1.0.0-02019/02/267 年前

关于 @atom/babel-plugin-chai-assert-async 的常见问题

@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 和提交记录判断。