
- 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 } ]