# @bedrock/test 中文文档

规范地址：https://npmcn.com/package/%40bedrock/test/

版本：10\.0\.0
npm 元数据更新时间：2026-09-02T20:09:10.589Z
中文译文更新时间：2026-11-07T21:57:44.444Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40bedrock/test
原文对照：https://npmcn.com/package/%40bedrock/test/?lang=original
项目主页：https://github.com/digitalbazaar/bedrock-test
源码仓库：https://github.com/digitalbazaar/bedrock-test

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

- 包体积（解压后）：31 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：4 个
- peer 依赖：@bedrock/core ^6\.3\.0
- 首次发布：2022-03-31T19:44:02.526Z
- 最新版本发布：2026-09-02T20:09:10.398Z
- 近 30 天下载量：2311（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：17（近 12 个月 4 个）

## 中文简介

贝德洛克测试

## 安装

```sh
npm install @bedrock/test
```

也可以使用：`pnpm add @bedrock/test`、`yarn add @bedrock/test`、`bun add @bedrock/test`

## README

# @ bedrock/测试

## 概览

Bedrock后端测试使用Mocha而前端测试使用Karma. 改为: 运行多个模块测试,因果测试和摩卡测试都可以 从本单元中初始化并配有人员。 然而,这也是可能的 一次在一个模块上运行测试.

## 所需资源

这个软件需要并支持维持了最新版本的Node.js. 更新可能会去除对旧的未维护的平台版本的支持. 请使用 依赖版本锁定文件和测试以确保与此兼容 软件.

## Mocha 测试

模块的测试旨在独立于一个完整的基石 发展环境。 要在模块上进行测试,只需要模块 将被复制。 可以在当地建立测试环境,并进行测试.

有关Mocha的更多信息,参见: [https://mochajs.org/#获得-启动](https://mochajs.org/#getting-started)

### 设置

本节介绍试验环境. 后一节将 描述实际测试.

#### 快速设置示例

为了对单个模块进行测试,克隆模块:

```
npm install bedrock-module
```

测试目录中所需的 Bedrock 模块 `bedrock-modules/test`数字 :

```
npm install
```

在同一地点进行测试:

```
npm test
```

做一个 `npm install` 在模块测试目录中填充 Bedrock 测试目录中的模块,基于包含在 `bedrock-module/test/package.json`。 。 。 .

#### 如何运作

-   模块的测试环境设置并在此范围内执行 模块的 `test` 目录。 测试脚本设置在 `package.json` 文件 运行测试套件 `npm test` 在命令行中输入.
    
    ```js
    "scripts": {
      "test": "node --preserve-symlinks test.js test"
    }
    ```
    
    这将运行测试文件 `test.js`。 。 。 .
    
-   `test.js` 将装入所需的模块,包括 `@bedrock/test` 并开始贝德洛克.
    
-   `index.js` 模块中的 `./lib` 目录将运行,任何所需的模块将从 `test/node_modules` 目录.
    
-   模块的配置文件, `config.js`,首先被加载,但必须注意的是,最后一个配置文件将覆盖以前的配置. 比如说,就我们来说 `config.test.js` 将覆盖 `config.js` 由于测试配置文件是稍后加载的.
    
-   `bedrock.events.on('bedrock.test.configure')` 是一个会执行的听众 `bedrock.test.configure`中设置 `@bedrock/test` 模块。 这样可以装入 `test.config.js`。 。 。 .
    
-   `test.config.js` 设置数据库并创建许可角色。 还可以加载其中包含的所有测试文件 `mocha` 通过此行的目录 :
    
    ```js
    config.mocha.tests.push(path.join(__dirname, 'mocha'));
    ```
    
    一个数组与其中的所有 \*.js 文件一起创建 `test/mocha` 文件夹,文件按顺序执行。 通常的做法是按照您希望测试执行的顺序对这些文件进行编号 .
    
-   帮助函数、模拟数据和其他支持代码可以包含在其中的其他文件中 `test/mocha` 目录。 譬如说, `mock.data.js` 财务报告和审定财务报表 `helpers.js` 是基建模块测试中常见的额外文件.
    

### 测试

本节介绍实际测试. 测试使用Mocha和chai,并存在于 `test/mocha` 目录。 需要指出的一些要点涉及测试.

### 快速测试示例

以下为典型测试的例子. 这个测试一个普通用户通过基建键加PublicKey API来添加公钥.

测试在一开始做一些数据准备,然后在每次测试之间清除一些测试数据. 许多测试的一般流量与这个相似:

1.  建立进行测试所需的数据和身份.
2.  执行考核.
3.  将实际结果同预期成果进行比较.

大部分的工作和下面的例子都集中在步骤1:数据和身份的设置.

\*\*\* 说明:这些例子已过时;基本身份已去除\*\*\*

在测试中,设置预装数据来自 `mock.data.js` 使用辅助函数输入数据库:

```js
var mockData = require('./mock.data');
```

```js
before(done => {
  helpers.prepareDatabase(mockData, done);
});
```

与通常情况一样,建立这种数据是为了代表具有特定一组系统资源角色(permissions)的不同身份. 内部 `mock.data.js`,用于创建身份的帮助函数 :

```js
var mock = {};
module.exports = mock;

var identities = mock.identities = {};
var userName;

userName = 'regularUser';
identities[userName] = {};
identities[userName].identity = helpers.createIdentity(userName);
```

系统资源角色作为身份设置的一部分被添加. 配对通常是权限( sysRole) 和权限应用的资源或资源(基因资源):

```js
identities[userName].identity.sysResourceRole.push({
  sysRole: 'bedrock-key.test',
  generateResource: 'id'
});
```

在这种情况下, `'bedrock-key.test'` 是一个系统角色,定义于 `test.config.js` 允许用户访问、删除、创建或编辑每个资源的公钥:

```js
roles['bedrock-key.test'] = {
  id: 'bedrock-key.test',
  label: 'Key Test Role',
  comment: 'Role for Test User',
  sysPermission: [
    permissions.PUBLIC_KEY_REMOVE.id,
    permissions.PUBLIC_KEY_ACCESS.id,
    permissions.PUBLIC_KEY_CREATE.id,
    permissions.PUBLIC_KEY_EDIT.id
  ]
};
```

在每次测试之前,或在测试之间,特定测试数据从测试内的数据库中清除:

```js
beforeEach(function(done) {
  helpers.removeCollection('publicKey', done);
});
```

可以为一组测试设定身份以避免重复. 在这种情况下,为具有相关资源作用的普通用户设定身份. 将使用这种身份进行若干测试:

```js
describe('authenticated as regularUser', () => {
  var mockIdentity = mockData.identities.regularUser;
  var actor;
  before(done => {
    brIdentity.get(null, mockIdentity.identity.id, (err, result) => {
      actor = result;
      done(err);
    });
  });
});
```

最后,进行测试并检查数据:

```js
it('should add a valid public key with no private key', done => {
  var samplePublicKey = {};

  samplePublicKey.publicKeyPem = mockData.goodKeyPair.publicKeyPem;
  samplePublicKey.owner = actor.id;

  async.auto({
    insert: function(callback) {
      brKey.addPublicKey(actor, samplePublicKey, callback);
    },
    test: ['insert', function(callback, results) {
      database.collections.publicKey.find({
        'publicKey.owner': actor.id
      }).toArray(function(err, result) {
        should.not.exist(err);
        should.exist(result);
        result[0].publicKey.publicKeyPem.should.equal(
          samplePublicKey.publicKeyPem);
        callback();
      });
    }],
  }, done);
});
```

此测试使用普通用户身份来测试API. 这个 `brKey.addPublicKey` 函数调用将执行测试。 对预期结果与实际结果的比较采用下列方法: `should` 摩查指令. 如果成功,测试将继续; 如果出现故障,测试就会停止.

### 剖析测试

如何描述一个基建测试套件:

对任何摩卡测试文件进行本地修改 :

```js
// do not include this in package.json; it will be installed by npx
import nsolid from 'nsolid';

describe.only('some suite', function() {
  before(async () => {
    // wait for nsolid to be ready
    await delay(5000);
    // or without `delay` library
    // await new Promise(r => setTimeout(r, 5000));

    // start nsolid profile and run for up to 60000ms
    nsolid.profile(60000);
  });

  after(() => {
    // stop the profile if it hasn't already timed out
    nsolid.profileEnd();
  });

  // it(...)
});
```

然后运行 :

```
npx nsolid-quickstart --npm test
```

配置完成后,您的浏览器应该打开一页到 nsolid 用户界面可以使用您的 GitHub ID 登录 。 那就看下面,看那边 `assets` 改为 参见生成的配置文件.

## 许可证

[Apache 许可证,2.0版本](https://npmcn.com/package/%40bedrock/test/LICENSE) 版权所有 2011-2024 Digital Bazaar, Inc.

其他贝德罗克图书馆可使用非商业许可证 诸如自学、研究、个人项目或评价目的. 见 [Bedrock 非商业许可证 v1.0](https://github.com/digitalbazaar/bedrock/blob/main/LICENSES/LicenseRef-Bedrock-NC-1.0.txt) 详细情况.

商业许可证和通过联系获得支助 [数字集市](https://digitalbazaar.com/) [支持@ digitalbazaar.com](mailto:support@digitalbazaar.com)。 。 。 .

## 常见问题

### @bedrock/test 是什么？

贝德洛克测试

### 如何安装 @bedrock/test？

在项目目录运行 npm install @bedrock/test，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@bedrock/core（^6\.3\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @bedrock/test 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/bedrock\_\_test 是否存在。

### @bedrock/test 支持 ESM 还是 CommonJS？

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

### @bedrock/test 需要什么版本的 Node\.js？

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

### @bedrock/test 可以商用吗？

@bedrock/test 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @bedrock/test 的下载量有多少？

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

### @bedrock/test 还在维护吗？

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

