
- 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 Where 條件
- Node.js - MySQL Order By 排序
- 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.report() 函式
assert 模組提供了一組斷言函式,用於驗證不變數。tracker.report() 函式是 Node.js assert 模組的內建函式。
當我們想要了解關於函式預期呼叫次數和實際呼叫次數的資訊時,Node.js tracker.report() 函式非常有用,特別是當函式的呼叫次數與預期不符時。
此函式返回一個物件陣列,其中包含由 tracker.calls() 函式返回的包裝函式的所有資訊。
語法
以下是 Node.js tracker.report() 函式 的示例:
tracker.report();
引數
此函式不接受任何引數。
返回值
函式 tracker.report() 返回一個物件陣列,其中包含由 tracker.calls() 函式返回的包裝函式的資訊。
包含的資訊 物件 如下所述:
message<string> − 該訊息將由函式自動分配。
actual<number> − 顯示函式被實際呼叫的次數。
expected<number> − 顯示函式預期被呼叫的次數。
operator<operator> − 這將讓我們知道被包裝函式包裝的函式的名稱。
stack<Object> − 函式的堆疊跟蹤。
示例
在下面的示例中,
我們建立了一個 呼叫跟蹤器 物件。
然後我們建立了一個包裝函式。
然後我們將函式 func 作為引數傳遞給 tracker.calls() 函式,我們將函式 func 包裝到包裝函式 funccall 中。
然後我們呼叫 tracker.report() 函式。
const assert = require('assert'); const tracker = new assert.CallTracker(); function func() {}; const callsfunc = tracker.calls(func, 5); console.log(tracker.report());
輸出
/home/cg/root/63a002c52763b/main.js:1 (function (exports, require, module, __filename, __dirname) { aconst assert = require('assert'); ^^^^^^ SyntaxError: Unexpected identifier at new Script (vm.js:74:7) at createScript (vm.js:246:10) at Object.runInThisContext (vm.js:298:10) at Module._compile (internal/modules/cjs/loader.js:670:28) 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)
注意 − 有時線上編譯器可能無法提供預期的結果,因此我們會在本地執行上述程式碼。
當我們編譯並執行程式碼時,函式 tracker.report() 將在輸出中顯示一個物件陣列。
[ { message: 'Expected the func function to be executed 5 time(s) but was executed 0 time(s).', actual: 0, expected: 5, operator: 'func', stack: Error at CallTracker.calls (node:internal/assert/calltracker:44:19) at Object.<anonymous> (C:\Users\Lenovo\Desktop\JavaScript\nodefile.js:7:27) 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 } ]
示例
在示例中,
我們執行的操作與上述程式相同。
但是在此程式碼中,我們呼叫了包裝函式 3 次,這與我們傳遞給 tracker.calls() 函式的 exact 引數不匹配。
const assert = require('assert'); const tracker = new assert.CallTracker(); function func() {}; const callsfunc = tracker.calls(func, 5); callsfunc(); callsfunc(); callsfunc(); 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)
注意 − 有時線上編譯器可能無法提供預期的結果,因此我們會在本地執行上述程式碼。
如果我們編譯並執行程式碼,tracker.reports() 函式將在輸出中顯示一個物件陣列。
[ { message: 'Expected the func function to be executed 5 time(s) but was executed 3 time(s).', actual: 3, expected: 5, operator: 'func', stack: Error at CallTracker.calls (node:internal/assert/calltracker:44:19) at Object.<anonymous> (C:\Users\Lenovo\Desktop\JavaScript\nodefile.js:7:27) 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 } ]
示例
在下面的示例中,我們按預期呼叫包裝函式,次數與我們傳遞給 tracker.calls() 函式的 exact 引數相同。
const assert = require('assert'); const tracker = new assert.CallTracker(); function func() {}; const callsfunc = tracker.calls(func, 5); callsfunc(); callsfunc(); callsfunc(); callsfunc(); callsfunc(); 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)
注意 − 有時線上編譯器可能無法提供預期的結果,因此我們會在本地執行上述程式碼。
因此,如果我們編譯並執行程式碼,tracker.report() 函式將返回一個空的物件陣列。
[]