@bifravst/bdd-markdown

中文文档
9.0.5发布于 2026/10/30BSD-3-ClauseTypeScriptES Module构建来源已验证近 30 天下载 1743

在Markdown中写入BDD测试.

中文使用文档
文档目录17 节
  1. 思想
  2. 历史
  3. 实例
  4. 使用 Soon 关键词
  5. 通过依赖关系控制特性执行命令
  6. 运行中的特性 第一个 财务报告和审定财务报表 最后一个
  7. 示例:在所有其他特性之前运行一个特性
  8. 示例:在所有其他特性之后运行一个特性:
  9. 跳过特性
  10. 示例: 跳过一个特性
  11. 只运行特定特性
  12. 示例:只运行一个特定特性
  13. 备选案文
  14. JSON 的占位数
  15. 标记下报员
  16. 节点和国家预防机制
  17. 类型脚本 6和 7

BDD 标记 npm version

Test and Release semantic-release Renovate @commitlint/config-conventional code style: prettier ESLint: TypeScript

在Markdown中写入BDD测试.

思想

写入 BDD 测试应该更舒适 比这, (中文(简体) ), 为什么不用Markdown? 它可以看着 像这样。 。 。 .

  • 它是一个支持良好的文档格式,许多工具如自动格式 已经存在
  • 它为构建分级文件提供了良好的工具
  • 它支持嵌入源代码/ JSON 有效载荷,甚至表格
  • 前置物质可用于特性级配置

历史

原BDD e2e特性跑道工程于2018年开工,该项目已经 证明对试验云内溶液非常有用。 更多关于 原创创意 这里。 。 。 . 然而,执行工作有一些缺陷。 特别是理解测试 成果以及处理状态和重复的方式并不理想。 临Τ 旧密码库本身没有足够覆盖 测试。 因此,这个 该项目于2022年启动,有4年的写作经验 运行测试。 有了一双新眼睛,写字的方法就完成了 从Gherkin改为Markdown 要求独立释放 项目.

实例

  • 支持语法的解析
  • 盖克金 Rule 关键词
  • 火星漫游者卡塔 (这个) 显示 Soon 重试步骤的关键字)
    运行 : $(set -o pipefail && node --no-warnings examples/mars-rover/tests.ts | node --no-warnings reporter/console-cli.ts)
  • 固件 UART 日志断言 (这证明使用 Context,这是一个全球对象 可供为测试运行提供运行时间设置,以替换 在阶梯标题和代码块中的占位符。 )
    运行 : $(set -o pipefail && node --no-warnings examples/firmware/tests.ts | node --no-warnings reporter/console-cli.ts)

使用 Soon 关键词

让我们来看看这个情景:

# To Do List

## Create a new todo list item

Given I create a new task named `My item`

Then the list of tasks should contain `My item`

如果您正在测试一个待办事宜列表系统, 那最终会一致吗 ?

更具体地说: 创建一个新任务是通过 POST 请求 返回 a 的 API 202 Accepted 状态代码.

系统不能保证你刚刚创造的任务 马上 可用.

这个 Then 断言将失败,因为它立即被执行.

为了测试最终一致的系统,我们需要等待一个合理的 足够时间或重试断言.

但是,如果你的测试套房里有很多类似的断言, 很快就会 加上长期时间.

因此,最有效的解决办法是重试这一说法,直到它过去, 或时出. 这样可以使用后退算法等待增加 更长时间,很多尝试 在测试运行期间,将拥有最少的量 对运行时间的影响.

执行适当的重新试验方式留待执行步骤, 不过,鼓励您使用下列方法标示这些最终步骤: Soon 关键词.

通过依赖关系控制特性执行命令

默认情况下, 这些特性不会按特定顺序加载 。 你个 可能 试图 命令他们使用命名惯例,但可以强制进行排序 ,随着时间的推移,文件可能需要重新命名,以腾出空间 新的特性.

在此工程中, 特性可以指定对一个或多个其它特性的依赖性 ,在解析所有特性文件后,它们将被排序 地形学。 。 。 .

特征可以通过 needs 关键字 :

---
needs:
  - First feature
---

# Second

## Scenario

Given this is the first step

此特性将在带有名称的特性后运行 First feature

运行中的特性 第一个 财务报告和审定财务报表 最后一个

此外,功能可以指定是否应在所有其他功能之前运行 特征,或者毕竟。 多个关键字可以有此旗帜, 但依赖性 将优先.

示例:在所有其他特性之前运行一个特性

---
order: first
---

# Runs before all others

## Scenario

Given this is the first step

示例:在所有其他特性之后运行一个特性:

---
order: last
---

# Runs before all others

## Scenario

Given this is the first step

跳过特性

特性可以跳过, 这也会跳过所有依赖和瞬间 依赖性特性.

示例: 跳过一个特性

---
run: never
---

# This feature never runs

## Scenario

Given this is the first step

只运行特定特性

功能可以完全运行, 这将运行所有依赖和 短暂的依赖性特征. 所有其他未标记为 run: only 将被跳过.

示例:只运行一个特定特性

---
run: only
---

# This feature runs, all other features are skipped

## Scenario

Given this is the first step

备选案文

变体(在特性的前题所定义)可用于运行相同的 特性在不同变体中。 对于每个变体条目,特性文件是 运行。 (示例(中文(简体) )

JSON 的占位数

对于JSON代码块,有一个特殊的标记来替换数字占位符, 保留 JSON 语法并允许像更美的格式 以格式化代码块.

Given `v` is the number `42`

And I store this in `result`

```json
{ "foo": "$number{v}" }
```

Then `result` should match

```json
{ "foo": 42 }
```

标记下报员

它包括一个减记记者, 将套件结果变成减记, 适合显示为 GitHub 动作任务摘要。 。 。 .

示例 火星漫游者报告

节点和国家预防机制

这个项目需要节点.js >=24.19.0 <25 页:1 >=12.0.2 <13 (强制执行) 通过 check-node-version 打开 npm install 财务报告和审定财务报表 npm ci) (中文(简体) ).

检查时跳过 npm publish 财务报告和审定财务报表 npm pack,因为 semantic-release 捆绑自己的npm(@semantic-release/npm 取决于 npm@^11.6.2)并使用该版本而不是该版本运行出版物 安装于 CI.

类型脚本 6和 7

此还原 并行运行类型脚本 6和 7, (中文(简体) ), 这样,斯林特工作。 。 。 .

版本与发布记录

@bifravst/bdd-markdown 共发布 87 个版本,首次发布于 2024/07/13;过去 12 个月发布了 12 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
9.0.5latest2026/10/3010 天前
9.0.42026/10/011 个月前
9.0.32026/09/151 个月前
9.0.22026/08/192 个月前
9.0.12026/08/172 个月前
16.3.0-dev.4dev2026/08/172 个月前

关于 @bifravst/bdd-markdown 的常见问题

@bifravst/bdd-markdown 是什么?

在Markdown中写入BDD测试.

如何安装 @bifravst/bdd-markdown?

在项目目录运行 npm install @bifravst/bdd-markdown,或使用 pnpm add / yarn add / bun add。

@bifravst/bdd-markdown 支持 TypeScript 吗?

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

@bifravst/bdd-markdown 支持 ESM 还是 CommonJS?

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

@bifravst/bdd-markdown 需要什么版本的 Node.js?

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

@bifravst/bdd-markdown 可以商用吗?

@bifravst/bdd-markdown 使用 BSD-3-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括,不构成法律意见,请以许可原文为准。

@bifravst/bdd-markdown 的下载量有多少?

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

@bifravst/bdd-markdown 还在维护吗?

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