@bedrock/test

中文文档
10.0.0发布于 2026/09/03Apache-2.0ES Module近 30 天下载 2311

贝德洛克测试

中文使用文档
文档目录8 节
  1. 概览
  2. 所需资源
  3. Mocha 测试
  4. 设置
  5. 测试
  6. 快速测试示例
  7. 剖析测试
  8. 许可证

@ bedrock/测试

概览

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

所需资源

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

Mocha 测试

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

有关Mocha的更多信息,参见: https://mochajs.org/#获得-启动

设置

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

快速设置示例

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

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 在命令行中输入.

    "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 通过此行的目录 :

    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 使用辅助函数输入数据库:

var mockData = require('./mock.data');
before(done => {
  helpers.prepareDatabase(mockData, done);
});

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

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

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

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

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

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

在这种情况下, 'bedrock-key.test' 是一个系统角色,定义于 test.config.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
  ]
};

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

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

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

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);
    });
  });
});

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

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 摩查指令. 如果成功,测试将继续; 如果出现故障,测试就会停止.

剖析测试

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

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

// 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版本 版权所有 2011-2024 Digital Bazaar, Inc.

其他贝德罗克图书馆可使用非商业许可证 诸如自学、研究、个人项目或评价目的. 见 Bedrock 非商业许可证 v1.0 详细情况.

商业许可证和通过联系获得支助 数字集市 支持@ digitalbazaar.com。 。 。 .

版本与发布记录

@bedrock/test 共发布 17 个版本,首次发布于 2022/04/01;过去 12 个月发布了 4 个版本。

版本发布日期距今
10.0.0latest2026/09/032 个月前
9.0.02026/04/077 个月前
8.3.02026/04/077 个月前
8.2.12026/03/107 个月前
8.2.02024/02/292 年前
8.0.52022/05/144 年前

关于 @bedrock/test 的常见问题

@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 和提交记录判断。