- Node.js 教程
- Node.js - 首页
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 第一个应用程序
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调函数概念
- Node.js - 上传文件
- Node.js - 发送邮件
- Node.js - 事件
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 进程
- Node.js - 应用程序扩展
- Node.js - 打包
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲区
- Node.js - 流
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL 创建数据库
- Node.js - MySQL 创建表
- Node.js - MySQL 插入数据
- Node.js - MySQL 查询数据
- Node.js - MySQL 条件查询
- Node.js - MySQL 排序
- Node.js - MySQL 删除数据
- Node.js - MySQL 更新数据
- Node.js - MySQL 连接查询
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB 插入数据
- Node.js - MongoDB 查询数据
- Node.js - MongoDB 查询条件
- Node.js - MongoDB 排序
- Node.js - MongoDB 删除数据
- Node.js - MongoDB 更新数据
- Node.js - MongoDB 数据限制
- Node.js - MongoDB 连接查询
- Node.js 模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - 实用程序模块
- Node.js - Web 模块
- Node.js 有用资源
- Node.js - 快速指南
- Node.js - 有用资源
- Node.js - 讨论
Node.js - 新的 assert.CallTracker()
本章将讨论 Node.js 中的 assert.CallTracker() 类。在深入探讨该类之前,让我们先了解一下 Node.js 中的断言。
Node.js 中的断言
可以使用断言来评估编程表达式。Node.js 提供了一个名为 assertion 的模块,该模块包含不同类型的断言函数。assert 模块用于在 Node.js 中执行单元测试。
断言是编程语言中至关重要的组成部分,因为它们允许我们评估一段代码是否正确或准确。通过此,我们可以构建高质量的代码。
注意 − 要理解和了解断言函数的工作原理,您需要在计算机上安装最新版本的 Node。
如何导入和使用 Assertion 模块
要导入 assert 模块,我们需要包含以下代码片段。
const assert = require('assert');
什么是 assert.CallTracker()?
Node.js assert.CallTracker() 用于跟踪函数是否被调用了特定次数,这将通过使用一些特殊的函数来完成。
要创建一个 CallTracker 对象,我们需要添加以下代码片段。
const assert = require('assert');
const tracker = new assert.CallTracker();
现在,让我们在下面的示例中添加几行代码,以查看 CallTracker 函数的工作方式。
在下面的示例中,
我们创建一个函数 func,它将打印一个数字的乘法表到特定数字。
然后我们创建一个函数 funccall,它将函数 func 作为 Node.js tracker.calls() 函数的第一个参数。
我们没有在第二个参数中传递整数值,因此 tracker.calls() 默认假设值为 1 并期望函数调用一次。
跟踪函数 func 被调用的次数的唯一方法是将其包装在 tracker.calls() 中,这将保存 func 被调用的次数的记录。
然后我们调用 tracker.verify() 来验证 funccall 是否按照预期调用了一次。
示例
const assert = require('assert');
const tracker = new assert.CallTracker();
function func() {
const number = 5;
//creating a multiplication table
for(let i = 1; i <= 5; i++) {
// multiply i with number
const result = i * number;
// display the result
console.log(`${number} * ${i} = ${result}`);
}
};
const funccall = tracker.calls(func);
funccall();
tracker.verify();
输出
const assert = require('assert');
const tracker = new assert.CallTracker();
function func() {
const number = 5;
//creating a multiplication table
for(let i = 1; i <= 5; i++) {
// multiply i with number
const result = i * number;
// display the result
console.log(`${number} * ${i} = ${result}`);
}
};
const funccall = tracker.calls(func);
funccall();
tracker.verify();
注意 − 有时在线编译器可能无法给出预期的结果,因此我们将在本地执行上述代码。
如果我们编译并运行代码,则不会抛出任何错误,因为 funccall 按照预期调用了指定的次数。
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
什么是跟踪器报告?
跟踪器报告是一个对象数组,其中包含有关跟踪函数时发生的错误的详细信息。
信息对象包含如下描述:
message<字符串> 消息将由函数自动分配。
actual<数字> 这显示了函数被调用的实际次数。
expected<数字> 这显示了函数预期调用的次数。
operator<运算符> 这将让我们知道包装函数所包装的函数的名称。
stack<对象> 函数的堆栈跟踪。
现在让我们来看一个使用 tracker.report() 获取有关跟踪函数时发生的错误详细信息的示例。
示例
在下面的示例中,
在这段代码中,我们期望 funccall 被调用 3 次。但是 funccall 只被调用了一次,因此将抛出错误。
当我们调用 tracker.report() 时,它将显示函数被调用和预期调用的次数等详细信息。
const assert = require('assert');
const tracker = new assert.CallTracker();
function func() {
const number = 5;
//creating a multiplication table
for(let i = 1; i <= 2; i++) {
// multiply i with number
const result = i * number;
// display the result
console.log(`${number} * ${i} = ${result}`);
}
};
const funccall = tracker.calls(func, 3);
funccall();
console.log(tracker.report());
输出
/home/cg/root/63a002c52763b/main.js:3 const tracker = new assert.CallTracker(); ^ TypeError: assert.CallTracker is not a constructor at Object.<anonymous> (/home/cg/root/63a002c52763b/main.js:3:17) at Module._compile (internal/modules/cjs/loader.js:702:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10) at Module.load (internal/modules/cjs/loader.js:612:32) at tryModuleLoad (internal/modules/cjs/loader.js:551:12) at Function.Module._load (internal/modules/cjs/loader.js:543:3) at Function.Module.runMain (internal/modules/cjs/loader.js:744:10) at startup (internal/bootstrap/node.js:238:19) at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)
注意 − 有时在线编译器可能无法给出预期的结果,因此我们将在本地执行上述代码。
执行上述程序后,它将生成以下输出:
5 * 1 = 5
5 * 2 = 10
[
{
message: 'Expected the func function to be executed 3 time(s) but was executed 1 time(s).',
actual: 1,
expected: 3,
operator: 'func',
stack: Error
at CallTracker.calls (node:internal/assert/calltracker:44:19)
at Object.<anonymous> (C:\Users\Lenovo\Desktop\JavaScript\nodefile.js:19:26)
at Module._compile (node:internal/modules/cjs/loader:1126:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
at Module.load (node:internal/modules/cjs/loader:1004:32)
at Function.Module._load (node:internal/modules/cjs/loader:839:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47
}
]
