@approval-tests/approvals

中文文档
7.5.14发布于 2026/11/02Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 2.3万

核准测试库 - 掌握人类情报

中文使用文档
文档目录31 节
  1. 目录
  2. 介绍
  3. 标签
  4. 一体化
  5. 开始
  6. Jest 字体启动器项目
  7. 摩诃迦叶
  8. 文档
  9. 国 际
  10. 安装核准CLI
  11. CLI 帮助
  12. 记者
  13. 内建的记者
  14. 支持的 Diff 工具
  15. 自定义记者
  16. 配置
  17. API 密码
  18. 核准数
  19. 报告人
  20. 批准~配置(覆盖选项)
  21. 批准 ~ GetConfig( 覆盖选项) ~ Object
  22. 批准~mocha(可选BaseDir)
  23. 批准~验证AndScrub( dirName, 测试Name, 数据, 洗涤器, 选项管理)
  24. 批准~核实( dirName, 测试Name, 数据, 选项覆盖)
  25. 批准~验证ASJSON( dirName, 测试Name, 数据, 选项覆盖)
  26. 批准~验证ASJSONANDScrub( dir Name, 测试Name, 数据, 洗涤器, 选项管理)
  27. 批准~通过控制核实(名称、作者、[报告事实]、[选项重叠])
  28. 源控件
  29. 图形
  30. 捐款
  31. 许可证

核准(Node.js核准试验)

目录

介绍

核准测试库 - 掌握人类情报

什么是批准测试? 检查一下简报 此处概述 或了解更多有关批准 (原始内容存档于2018-10-21) (中文(简体) ). laidtests.com。 。 。 .

标签

服务状态
软件包@ npm 上的核准-测试/批准
Github (Linux, Mac, Windows) (英语)Build & Test

一体化

开始

莫查,杰斯特,和维特是可选的同伴依赖关系. 安装框架 您的测试与批准同时使用。 核准默默跳过整合 未安装的框架.

Jest 字体启动器项目

如果您想要跳转到开始一个新项目, 请复制 捷运启动项目

摩诃迦叶

下面是一个简单的开始使用Mocha.

  1. 创建工程( 文件夹)

    mkdir MyProject
    cd MyProject
    
  2. 安装核准

    npm install --save-dev @approval-tests/approvals
    
  3. 安装 摩诃迦叶 在进行测试的项目中

    npm install --save-dev mocha
    
  4. 创建一个名为 Mocha 的样本测试文件 SimpleLogger.test.js。 。 。 .

    require("@approval-tests/approvals").mocha();
    
    describe("When running some tests", function () {
      it("should be able to use Approvals", function () {
        var data = "Hello World!";
        this.verify(data); // or this.verifyAsJSON(data)
      });
    });
    
  5. 以摩诃迦叶试取所取文件.

    npx mocha SimpleLogger.test.js
    
  6. 应当向您展示 diff 工具 。 (如果没有,你可能需要安装一个?)

文档

如果使用 Jest, 请看 这里更多文档。 。 。 .

国 际

核准。 节点JS有一个版本,可以作为命令行工具运行.

你可以检查出来 Examples 以下CLI帮助部分。 或是介绍此工具的博客文章: 核准测试 - 命令行工具( CLI)。 。 。 .

安装核准CLI

npm install -g @approval-tests/approvals

CLI 帮助

通过运行 approvals --help

使用量

approvals testName [options]

参数说明
[ --forceapproveall] (法语)跳过批准步骤,并将结果应用到. 批准. txt 文件( 第一次运行良好)
[-记者 difftool]支持多个EX : --reporter opendiff --reporter gitdiff
[-出放置批准文件的目录 - 默认为当前目录
[--动词]额外的调试信息
东都:我们需要扩大所支持的参数,以包括其他核准方案。 (档案: 问题 如果你需要一个不在这里)

实例

简单的问候世界
echo 'Hello World!' | approvals helloWorldTest
指定 diff 报员( C. I. 的伟大)
echo 'Hello World!' | approvals helloWorldTest --reporter gitdiff
多名记者
echo 'Hello World!' | approvals helloWorldTest --reporter gitdiff --reporter p4merge

记者

内建的记者

下列记者可以满足您的需要。 有些支持图像,有些只播放文字,有些在mac和linux上,有些只在窗口上... 请随意配置系统,以自动选择您的最爱 .

支持的 Diff 工具

核准名称程序窗口麦克/ 林纳页:1
beyondcompare超越比较✓✓
copycommand数字 diff (主讲)✓✓对C. I.
diffmergeƯμ㼯A✓✓
donothing✓✓这个是按上面说的做 什么都没有.
gitdiff数字 diff (主讲)✓✓使用 git cli 到 diff 文件 。 在C. I. 建设中有用
icdiff图像✓✓
kdiff3KDiff3 数据✓✓
kompare康帕雷? 吗?✓
meld熔化✓✓
multi✓✓这使得您可以同时运行多个记者. EX: 在验证图像时, 您可能想要使用 p4merge 与《京都议定书》 copycommand 获取复制的 CLI 命令来批准一个图像以及查看工具中的 diff .
nodediff点头 (主讲)✓✓没有 diff 工具弹出彩色的 CLI 输出
opendiff打开✓
p4mergep4 缩放✓✓
tortoisemerge侵权合并✓✓
vimdiff✓✓
visualstudio视觉工作室 Diff 工具✓
vscode视觉工作室代码 Diff 工具✓✓
vscodiumVSCodium diff 工具✓✓

自定义记者

与内置记者一起,你可以创建自己的自定义记者 只是通过这个样本 并填写界面 与自定义记者 希望的行为.

    /* OR a custom reporter object. Below is an example custom reporter */
    {
      /**
       * Determine if the file that needs to be reported on can be handled by this reporter object.
       * @param {string} receivedFilePath - The path to a received file.
       */
      canReportOn(receivedFilePath) {
        return true;
      }

      /**
       * Apply the logic necessary to report a difference.
       *  EX:
       *     - Open a diff program using the approved & received files
       *     - Generate and email a report showing the differences.
       * @param {string} approvedFilePath - The path to an approved file.
       * @param {string} receivedFilePath - The path to a received file.
       */
      // Actually execute the diff against the two files
      report(approvedFilePath, receivedFilePath) {
        // Do some reporting.
        // Typically by launching a diff tool
      }
    }

配置

或更多,控制批准的行为 通过各种调整来配置.

批准使用以下配置来推动其行为. 如何将这种配置传达给批准,可以有几种方式发生.

以下定义的默认配置可以通过使用以下策略被推翻.

注:配置选择的优先级/顺序来自以下列表,其中第一个项目有定义的默认值,如果指定了配置值,则下一个步骤都有可能推翻上一个.

  1. 从默认开始(如下文JS对象所示),定义如下: lib/配置图。 。 。 .
  2. 然后,我们将在您家目录的 yaml 或 json 文件中配置默认值( 仅指定属性) 并覆盖默认值 ~/.approvalsConfig。 。 。 .
  3. 你可以打电话了 approvals.configure({...})。 。 。 .
  4. 然后通过测试级别上的任何特定配置作为校验函数中最后一个参数 .verify(..., {...overridden config...});。见 API 密码 用于特定参数.

这里有一个使用单一记者的例子 p4merge并且压倒一切。 这只会取代这个特定的测试 .

it("should use a specific reporter", function () {
  this.verify("some data", {
    reporters: ["p4merge"],
  });
});

如果你需要执行多个记者 一个失败.

说你做了一个"很棒的DiffReporter",希望它能与"通知BossViaEmail Reporter"结合运行,你可以像下面那样使用"多报".

var approvals = require("@approval-tests/approvals");
var MultiReporter = approvals.reporters.MultiReporter;

it("should use a multiple reporters", function () {
  this.verify("some data", {
    reporters: [new MultiReporter(["p4merge", "copycommand"])],
  });
});

export const defaultConfig: Config = {
  reporters: [
    "BeyondCompare",
    "diffmerge",
    "p4merge",
    "tortoisemerge",
    "nodediff",
    "opendiff",
    "gitdiff",
  ],
  normalizeLineEndingsTo: false,
  failOnLineEndingDifferences: false,
  appendEOL: true,
  EOL: os.EOL,
  errorOnStaleApprovedFiles: true,
  shouldIgnoreStaleApprovedFile: () => false,
  stripBOM: false,
  forceApproveAll: false,
  blockUntilReporterExits: false,
  maxLaunches: 10,
};

片段来源 | 锁定

API 密码

核准数

核准模块.

报告人

reporters 允许进入 MultiReporter

仁爱: 静态属性 approvals 示例

const MultiReporter = approvals.reporters.MultiReporter

记者。 多报员

这样可以访问多报构建器. 你可以利用这个同时运行多个记者.

仁爱: 静态属性 reporters 示例

approvals.verify(__dirname, "multi-reporter-example", "some data", {
  reporters: [
    new MultiReporter('p4merge', 'copycommand')
  ]
});

批准~配置(覆盖选项)

允许您为默认配置提供覆盖 .

仁爱: 内部方法 approvals

参数类型
覆盖选项*

示例

const approvals = require('@approval-tests/approvals');
approvals.configure({
  reporters: ['p4merge']
});

批准 ~ GetConfig( 覆盖选项) ~ Object

允许使用选项中传出的任何选项创建批准配置对象来覆盖默认值.

仁爱: 内部方法 approvals 回返数字 : Object - 任何选项被推翻的批准对象.

参数类型
覆盖选项Object

批准~mocha(可选BaseDir)

配置给摩卡测试的核准.

仁爱: 内部方法 approvals

参数类型说明
选项BaseDir*保存批准文件到的可选文件夹 .

批准~验证AndScrub( dirName, 测试Name, 数据, 洗涤器, 选项管理)

使用此功能在运行校验前将洗涤器功能应用到任何数据中 .

仁爱: 内部方法 approvals

参数类型说明
目录Namestring一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方).
测试Namestring文件名安全字符串可以调用与此测试相关的文件 .
数据string | Buffer要保存为文本文件的字符串或代表图像的缓冲器
洗涤器*一个需要字符串并返回字符串的函数。 如果在写入任何文件之前要擦除“ 数据” , 批准会称为此 .
选项覆盖*一个可以包含批准配置对象所定义的配置覆盖对象.

示例

// basic approval test with a custom scrubber
const approvals = require('@approval-tests/approvals');
const scrubber = approvals.scrubbers.multiScrubber([
   function (data) {
     return (data || '').replace("some text", "some other text");
   },
   approvals.scrubbers.guidScrubber // to remove guids from the received data
});
approvals.verifyAndScrub(__dirname, 'sample-approval-test', "some text to verify", scrubber);

批准~核实( dirName, 测试Name, 数据, 选项覆盖)

仁爱: 内部方法 approvals

参数类型说明
目录Namestring一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方).
测试Namestring文件名保存字符串以调用与此测试相关的文件 .
数据string | Buffer要保存为文本文件的字符串或代表图像的缓冲器
选项覆盖*一个可以包含批准配置对象所定义的配置覆盖对象.

示例

// basic approval test
const approvals = require('@approval-tests/approvals');
approvals.verify(__dirname, 'sample-approval-test', "some text to verify");

示例

// basic approval test providing an option to override configuration
const approvals = require('@approval-tests/approvals');
approvals.verify(__dirname, 'sample-approval-test', "some text to verify", { normalizeLineEndingsTo: true });

批准~验证ASJSON( dirName, 测试Name, 数据, 选项覆盖)

你可以通过"数据" 任何javascript对象 成为JSON.string 和运行校验对对.

仁爱: 内部方法 approvals

参数类型说明
目录Namestring一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方).
测试Namestring文件名安全字符串可以调用与此测试相关的文件 .
数据string | Buffer这可以是任何将成为JSON的JavaScript对象/阵列. 运行验证前已字符串
选项覆盖*一个可以包含批准配置对象所定义的配置覆盖对象.

示例

const approvals = require('@approval-tests/approvals');
approvals.verifyAndScrub(__dirname, 'sample-approval-test', { a: "some text in an object" });

批准~验证ASJSONANDScrub( dir Name, 测试Name, 数据, 洗涤器, 选项管理)

你可以通过"数据" 任何javascript对象成为JSON.stringifed. 在我们运行验证之前,洗涤器会运行 与完整的字符串,然后运行验证与它.

仁爱: 内部方法 approvals

参数类型说明
目录Namestring一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方).
测试Namestring文件名安全字符串可以调用与此测试相关的文件 .
数据string | Buffer这可以是任何将成为JSON的JavaScript对象/阵列. 运行验证前已字符串
洗涤器*一个需要字符串并返回字符串的函数。 如果在写入任何文件之前要擦除“ 数据” , 批准会称为此 .
选项覆盖*一个可以包含批准配置对象所定义的配置覆盖对象.

示例

// basic approval test with a custom scrubber
const approvals = require('@approval-tests/approvals');
const scrubber = approvals.scrubbers.multiScrubber([
   function (data) {
     return (data || '').replace("some text", "some other text");
   },
   approvals.scrubbers.guidScrubber // to remove guids from the received data
});
approvals.verifyAndScrub(__dirname, 'sample-approval-test', { a: "some text in an object" }, scrubber);

批准~通过控制核实(名称、作者、[报告事实]、[选项重叠])

这使得您在核实前完全控制了文件的命名和写作.

例如,我们用来在读取器中生成文件,请检查 测试/模拟/读取 在这个项目.

仁爱: 内部方法 approvals

参数类型
名称Object
编剧Object
[记者事实]function
[选项覆盖]Object

源控件

批准工具生成2个文件, 您可能想要忽略一个文件并检查另一个文件 .

  • *.received.* 文件应该是 关闭。 。 。 .
  • *.approved.* 你可能会想把批准的文件 保存在源控制.

图形

如果你在用的话 图形 将此添加到您的 .gitignore数字 :

*.received.*

取决于操作系统和操作系统 eol 设置在 git 中,失败测试时的 diff 输出可能会报告由于行尾的差异而更改的每行 。 为了避免出现这种情况,考虑通过将此行添加到您的 .gitattributes 文件 :

*.approved.* eol=lf

捐款

看看这个 准则来啊!

许可证

版权 (c) 2012-2017年 Llewellyn Falco, Jason Jarrett 凭Apache牌照获得执照.

版本与发布记录

@approval-tests/approvals 共发布 9 个版本,首次发布于 2026/09/26;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
7.5.14latest2026/11/025 天前
7.5.132026/10/2216 天前
7.5.122026/10/2216 天前
7.5.112026/10/2019 天前
7.5.102026/10/2019 天前
7.5.92026/10/1919 天前

关于 @approval-tests/approvals 的常见问题

@approval-tests/approvals 是什么?

核准测试库 - 掌握人类情报

如何安装 @approval-tests/approvals?

在项目目录运行 npm install @approval-tests/approvals,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 approvals,可以用 npx approvals 直接运行。

@approval-tests/approvals 支持 TypeScript 吗?

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

@approval-tests/approvals 支持 ESM 还是 CommonJS?

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

@approval-tests/approvals 需要什么版本的 Node.js?

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

@approval-tests/approvals 可以商用吗?

@approval-tests/approvals 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@approval-tests/approvals 的下载量有多少?

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

@approval-tests/approvals 还在维护吗?

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