- 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 - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - new assert.CallTracker()
在本章中,我们将讨论什么是 assert.CallTracker() 类Node.js。在进入上述课程之前,让我们先了解一下什么是Node.js中的 Assertion 。
Node.js中的 assert
可以使用 assert 来计算编程表达式。Node.js提供了一个名为 assertion 的模块,该模块包含不同类型的 assert 函数。assert 模块用于在 Node.js 中执行单元测试。
assertion 是编程语言中至关重要的组成部分,因为它们使我们能够评估一段代码是否正确或准确。通过这种方式,我们可以构建高质量的代码。
注意 : 要理解和了解 assert 函数的工作原理,您需要在计算机上安装最新的 Node 版本。
如何导入和使用 assert 模块
要导入 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 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();
注意: 有时在线编译器可能无法给我们预期的结果,因此我们在本地执行上述代码。
如果我们编译并运行代码,则不会抛出错误,因为funcall是按照预期的次数调用的。
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
什么是跟踪器报告?
跟踪器报告是一个对象数组,其中包含有关跟踪函数时发生的错误的详细信息。
信息对象持有如下所述 -
- message<string> 消息将由函数自动分配。
- actual<number> 这显示了调用函数的实际次数。
- expected<number> 这显示函数预期调用的次数。
- operator<operator> 这将让我们知道被包装器函数包装的函数的名称。
- stack<Object>函数的堆栈跟踪。
现在,让我们看一下示例,在该示例中,我们使用 tracker.report() 来获取有关跟踪函数时发生的错误的详细信息。
例在下面的示例中,
- 在此代码中,我们预计 funccall 将被调用 3 次。但是 funcall 只被调用了一次,因此会抛出错误。
- 正如我们调用 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());
输出
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 * 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
}
]