核准(Node.js核准试验)
目录
介绍
核准测试库 - 掌握人类情报
什么是批准测试? 检查一下简报 此处概述 或了解更多有关批准 (原始内容存档于2018-10-21) (中文(简体) ). laidtests.com。 。 。 .
标签
| 服务 | 状态 |
|---|---|
| 软件包 | @ npm 上的核准-测试/批准 |
| Github (Linux, Mac, Windows) (英语) |
一体化
开始
莫查,杰斯特,和维特是可选的同伴依赖关系. 安装框架 您的测试与批准同时使用。 核准默默跳过整合 未安装的框架.
Jest 字体启动器项目
如果您想要跳转到开始一个新项目, 请复制 捷运启动项目
摩诃迦叶
下面是一个简单的开始使用Mocha.
-
创建工程( 文件夹)
mkdir MyProject cd MyProject -
安装核准
npm install --save-dev @approval-tests/approvals -
安装 摩诃迦叶 在进行测试的项目中
npm install --save-dev mocha -
创建一个名为 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) }); }); -
以摩诃迦叶试取所取文件.
npx mocha SimpleLogger.test.js -
应当向您展示 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 | 图像 | ✓ | ✓ | |
kdiff3 | KDiff3 数据 | ✓ | ✓ | |
kompare | 康帕雷 | ? 吗? | ✓ | |
meld | 熔化 | ✓ | ✓ | |
multi | ✓ | ✓ | 这使得您可以同时运行多个记者. EX: 在验证图像时, 您可能想要使用 p4merge 与《京都议定书》 copycommand 获取复制的 CLI 命令来批准一个图像以及查看工具中的 diff . | |
nodediff | 点头 (主讲) | ✓ | ✓ | 没有 diff 工具弹出彩色的 CLI 输出 |
opendiff | 打开 | ✓ | ||
p4merge | p4 缩放 | ✓ | ✓ | |
tortoisemerge | 侵权合并 | ✓ | ✓ | |
vimdiff | ✓ | ✓ | ||
visualstudio | 视觉工作室 Diff 工具 | ✓ | ||
vscode | 视觉工作室代码 Diff 工具 | ✓ | ✓ | |
vscodium | VSCodium 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
}
}
配置
或更多,控制批准的行为 通过各种调整来配置.
批准使用以下配置来推动其行为. 如何将这种配置传达给批准,可以有几种方式发生.
以下定义的默认配置可以通过使用以下策略被推翻.
注:配置选择的优先级/顺序来自以下列表,其中第一个项目有定义的默认值,如果指定了配置值,则下一个步骤都有可能推翻上一个.
- 从默认开始(如下文JS对象所示),定义如下: lib/配置图。 。 。 .
- 然后,我们将在您家目录的 yaml 或 json 文件中配置默认值( 仅指定属性) 并覆盖默认值
~/.approvalsConfig。 。 。 . - 你可以打电话了
approvals.configure({...})。 。 。 . - 然后通过测试级别上的任何特定配置作为校验函数中最后一个参数
.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
| 参数 | 类型 | 说明 |
|---|---|---|
| 目录Name | string | 一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方). |
| 测试Name | string | 文件名安全字符串可以调用与此测试相关的文件 . |
| 数据 | 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
| 参数 | 类型 | 说明 |
|---|---|---|
| 目录Name | string | 一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方). |
| 测试Name | string | 文件名保存字符串以调用与此测试相关的文件 . |
| 数据 | 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
| 参数 | 类型 | 说明 |
|---|---|---|
| 目录Name | string | 一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方). |
| 测试Name | string | 文件名安全字符串可以调用与此测试相关的文件 . |
| 数据 | 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
| 参数 | 类型 | 说明 |
|---|---|---|
| 目录Name | string | 一般来说 __dirname 但可以是存储批准和收到的文件的基准目录(任何地方). |
| 测试Name | string | 文件名安全字符串可以调用与此测试相关的文件 . |
| 数据 | 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牌照获得执照.