# @bonniernews/mocha-cakes-2 中文文档

规范地址：https://npmcn.com/package/%40bonniernews/mocha-cakes-2/

版本：1\.0\.0
npm 元数据更新时间：2026-10-23T09:00:33.983Z
中文译文更新时间：2026-11-08T11:03:37.238Z
软件包许可：ISC

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

原始 npm 页面：https://www.npmjs.com/package/%40bonniernews/mocha-cakes-2
原文对照：https://npmcn.com/package/%40bonniernews/mocha-cakes-2/?lang=original
项目主页：https://github.com/BonnierNews/mocha-cakes-2#readme
源码仓库：https://github.com/BonnierNews/mocha-cakes-2

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

- 包体积（解压后）：15.9 kB，5 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12
- 运行依赖：0 个
- peer 依赖：mocha \>=11
- 首次发布：2026-10-23T08:34:11.937Z
- 最新版本发布：2026-10-23T09:00:33.536Z
- 近 30 天下载量：3334（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

Mocha BDD 整合

## 安装

```sh
npm install @bonniernews/mocha-cakes-2
```

也可以使用：`pnpm add @bonniernews/mocha-cakes-2`、`yarn add @bonniernews/mocha-cakes-2`、`bun add @bonniernews/mocha-cakes-2`

## README

# 摩卡蛋糕 2

莫查蛋糕是个 [盖克金](https://github.com/cucumber/cucumber/wiki/Gherkin)编号 :[黄瓜](https://cucumber.io/) 语法集成 [摩诃迦叶](https://mochajs.org/) 测试框架.

[![CI](https://github.com/BonnierNews/mocha-cakes-2/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/BonnierNews/mocha-cakes-2/actions/workflows/ci.yml) [![Sponsored](https://img.shields.io/badge/chilicorn-sponsored-brightgreen.svg?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAMAAADjyg5GAAABqlBMVEUAAAAzmTM3pEn%2FSTGhVSY4ZD43STdOXk5lSGAyhz41iz8xkz2HUCWFFhTFFRUzZDvbIB00Zzoyfj9zlHY0ZzmMfY0ydT0zjj92l3qjeR3dNSkoZp4ykEAzjT8ylUBlgj0yiT0ymECkwKjWqAyjuqcghpUykD%2BUQCKoQyAHb%2BgylkAyl0EynkEzmkA0mUA3mj86oUg7oUo8n0k%2FS%2Bw%2Fo0xBnE5BpU9Br0ZKo1ZLmFZOjEhesGljuzllqW50tH14aS14qm17mX9%2Bx4GAgUCEx02JySqOvpSXvI%2BYvp2orqmpzeGrQh%2Bsr6yssa2ttK6v0bKxMBy01bm4zLu5yry7yb29x77BzMPCxsLEzMXFxsXGx8fI3PLJ08vKysrKy8rL2s3MzczOH8LR0dHW19bX19fZ2dna2trc3Nzd3d3d3t3f39%2FgtZTg4ODi4uLj4%2BPlGxLl5eXm5ubnRzPn5%2Bfo6Ojp6enqfmzq6urr6%2Bvt7e3t7u3uDwvugwbu7u7v6Obv8fDz8%2FP09PT2igP29vb4%2BPj6y376%2Bu%2F7%2Bfv9%2Ff39%2Fv3%2BkAH%2FAwf%2FtwD%2F9wCyh1KfAAAAKXRSTlMABQ4VGykqLjVCTVNgdXuHj5Kaq62vt77ExNPX2%2Bju8vX6%2Bvr7%2FP7%2B%2FiiUMfUAAADTSURBVAjXBcFRTsIwHAfgX%2FtvOyjdYDUsRkFjTIwkPvjiOTyX9%2FAIJt7BF570BopEdHOOstHS%2BX0s439RGwnfuB5gSFOZAgDqjQOBivtGkCc7j%2B2e8XNzefWSu%2BsZUD1QfoTq0y6mZsUSvIkRoGYnHu6Yc63pDCjiSNE2kYLdCUAWVmK4zsxzO%2BQQFxNs5b479NHXopkbWX9U3PAwWAVSY%2FpZf1udQ7rfUpQ1CzurDPpwo16Ff2cMWjuFHX9qCV0Y0Ok4Jvh63IABUNnktl%2B6sgP%2BARIxSrT%2FMhLlAAAAAElFTkSuQmCC)](http://spiceprogram.org/oss-sponsorship)

## 安装

国家预防机制:

```
npm install --save-dev @bonniernews/mocha-cakes-2
```

## 所需资源

-   节点js 22.12或以后
-   Mocha 11或12 (中文(简体) )`mocha` 属于对等关系: `mocha >= 11`(中文(简体) )

Mocha Cakes 2在Node.js22,24和26上与Mocha 11和12进行测试.

如果你在旧版本的Node.js或Mocha上,请使用 `mocha-cakes-2@3.3.0`。 。 。 .

## 使用量

### 启用 @ bonniernews/mocha- cakes-2 集成

要启用 Mocha 集成, 您需要指定 `@bonniernews/mocha-cakes-2` 输入 `ui` 选项.

#### 国 际

使用命令行参数 :

```javascript
mocha --ui @bonniernews/mocha-cakes-2 path/to/my/tests
```

或者放进你身上 [Mocha 配置文件](https://mochajs.org/running/configuring/),比如说. `.mocharc.json`数字 :

```json
{
  "ui": "@bonniernews/mocha-cakes-2"
}
```

或者说 `.mocharc.yml`数字 :

```yaml
ui: "@bonniernews/mocha-cakes-2"
```

#### API 密码

要么在你构建Mocha时在选项中通过:

```javascript
var Mocha = require('mocha');
// Mocha 12 is an ES module, so `require()` returns its namespace object
Mocha = Mocha.default || Mocha;

var mocha = new Mocha({
  ui: '@bonniernews/mocha-cakes-2'
});
```

或者在你建造了Mocha之后设定:

```javascript
var mocha = new Mocha();
mocha.ui('@bonniernews/mocha-cakes-2')
```

### 测试结构

```javascript
require('chai').should();

Feature('Some feature', () => {

  Scenario('Some Scenario', () => {

    let number = 2;

    Given('a number', () => {
      number.should.exist;
    });
    And('that number is 2', () => {
      number.should.equal(2);
    });

    When('adding 40', () => {
      number += 40;
    });

    Then('the number should be 42', () => {
      number.should.equal(42);
    });
  });
});
```

结果会是这样的:

![](https://npmcn.com/package/%40bonniernews/mocha-cakes-2/doc/example-feature-v2.png)

通用的Mocha功能(`describe`, (中文(简体) ), `it`, (中文(简体) ), `before`, (中文(简体) ), `after`等)也可用并可以与Mocha Cakes一起使用.

### 从摩卡饼升级到2 3.x

替换 `mocha-cakes-2` 依赖关系 `@bonniernews/mocha-cakes-2` 更改 `ui` 选项到 `@bonniernews/mocha-cakes-2`旧的 `mocha-cakes-2` 如果包装入, ui 名称仍然有效 `--require @bonniernews/mocha-cakes-2`。 。 。 .

### 从1.x版本升级

替换 `require('mocha-cakes-2')` 带有 `--ui @bonniernews/mocha-cakes-2` 选项.

### 类型脚本

TypeScript定义与@bonniernews/mocha-cakes-2相捆绑. 要直接使用 Mocha 和 TypeScript , 您需要 mocha 和 [ts-节点](https://github.com/TypeStrong/ts-node)。 。 。 .

```
npm install --save-dev typescript ts-node @types/mocha
```

你应该有一个 `tsconfig.json` 在您的项目根 像这样

```json
{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node"
  }
}
```

现在你可以这样运行它:

```
mocha -r ts-node/register --ui @bonniernews/mocha-cakes-2  ...
```

你的测试应该是这样的:

```
import '@bonniernews/mocha-cakes-2';

Feature('Some feature', () => {

  Scenario('Some Scenario', () => {

    let number = 2;

    Given('a number', () => {

    });
    And('that number is 2', () => {

    });

    When('adding 40', () => {

    });

    Then('the number should be 42', () => {

    });
  });
});
```

## API 密码

Mocha Cakes集成在全球范围增加了以下功能:

-   `Feature | feature`
    -   `Scenario | scenario`
        -   `Given | given`
        -   `When | when`
        -   `Then | then`
        -   `And | and`
        -   `But | but`

### `.skip`

跳过测试条款。 在所有测试功能上起作用.

摩诃萨 `--forbid-pending` 选项得到尊重.

```javascript
Feature('Some feature', () => {

  Scenario.skip('Skipped scenario', () => {
    // ...
  });

  Scenario('Ordinary', () => {
    // ...
  });
});
```

![](https://npmcn.com/package/%40bonniernews/mocha-cakes-2/doc/skipped-v2.png)

### `.only`

只运行指定的测试条款 。 在所有测试功能上起作用.

多个 `.only` 条款是合并的,就像Mocha的 `describe.only` 财务报告和审定财务报表 `it.only`还有莫查的 `--forbid-only` 财务报告和审定财务报表 `--grep` 选项得到遵守.

```javascript
Feature('Some feature', () => {

  Scenario('First scenario', () => {
    // ...
  });

  Scenario('Second scenario', () => {
    // ...
  });

  Scenario.only('Only I will run!', () => {
    // ...
  });

  // ...
});
```

![](https://npmcn.com/package/%40bonniernews/mocha-cakes-2/doc/only-v2.png)

### `beforeEachScenario` 财务报告和审定财务报表 `afterEachScenario`

在当前范围内,每个设想方案只执行一次所提供的功能.

```javascript
Feature('Some feature', () => {

  beforeEachScenario( () => {
    someSetup();
  });

  afterEachScenario( () => {
    doCleanup();
  });

  Scenario('First scenario', () => {
    // ...
  });

  Scenario('Second scenario', () => {
    // ...
  });

  // ...
});
```

### `beforeEachFeature` 财务报告和审定财务报表 `afterEachFeature`

只对当前范围内的每个特性执行一次所提供的函数.

```javascript
beforeEachFeature( () => {
  someSetup();
});

afterEachFeature( () => {
  doCleanup();
});

Feature('Some feature', () => {
  // ...
});

Feature('Another feature', () => {
  // ...
});

// ...
```

## 发展

使用 :

```
npm test
```

这两次运行测试套房,一次使用Mocha的CLI,一次使用Mocha的API(见下文).

### 持续融合

测试由 [GitHub 动作](https://github.com/BonnierNews/mocha-cakes-2/actions/workflows/ci.yml) 22号、24号、26号 和11号和12号.

### 对Mocha的测试 11

Mocha 12作为发展依赖而安装。 在当地对Mocha 11进行测试, 安装它而不保存到 `package.json`数字 :

```
npm install --no-save mocha@11 && npm test
```

运行 `npm install` 回到摩查12号.

### 测试 CLI 和 API 接口

如果你直接使用Mocha来进行测试,你可以设置 `MOCHA_INTERFACE` 环境变量为任意 `cli` 或者说 `api` 选择用哪个 Mocha 接口进行测试。 这个 `api` 界面在同一过程中运行样本测试,因此它也需要 `--require ./mocha-cakes.js`数字 :

```
MOCHA_INTERFACE=cli npx mocha test/feature/tests.js
MOCHA_INTERFACE=api npx mocha --require ./mocha-cakes.js test/feature/tests.js
```

`MOCHA_INTERFACE` 默认为 `cli` 如果没有设置值.

当你跑的时候 `npm run test:cli` 或者说 `npm run test:api` (或 `npm test` 管理他们俩, `MOCHA_INTERFACE` 自动设置到相应的值.

## 鸣谢

Mocha Cakes 2受到很大影响 **参数v**是因为 [摩卡饼](https://github.com/quangv/mocha-cakes/)。 。 。 .

## 常见问题

### @bonniernews/mocha-cakes-2 是什么？

Mocha BDD 整合

### 如何安装 @bonniernews/mocha-cakes-2？

在项目目录运行 npm install @bonniernews/mocha-cakes-2，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：mocha（\>=11）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @bonniernews/mocha-cakes-2 支持 TypeScript 吗？

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

### @bonniernews/mocha-cakes-2 支持 ESM 还是 CommonJS？

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

### @bonniernews/mocha-cakes-2 需要什么版本的 Node\.js？

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

### @bonniernews/mocha-cakes-2 可以商用吗？

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

### @bonniernews/mocha-cakes-2 的下载量有多少？

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

### @bonniernews/mocha-cakes-2 还在维护吗？

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

