• Node.js Video Tutorials

Node.js - assert.verify() 函式



assert 模組提供了一組斷言函式,用於驗證不變式。tracker.verify() 函式是 Node.js assert 模組的內建函式。

Node.js tracker.verify() 函式迭代傳遞給 tracker.calls() 函式的函式,如果傳遞給 tracker.calls() 的函式沒有按照預期次數被呼叫,則 tracker.verify() 函式將丟擲錯誤。

如果函式被呼叫的次數符合預期,則此函式不會丟擲任何錯誤。

語法

以下是Node.js tracker.verify() 函式的語法:

tracker.verify();

引數

此函式不接受任何引數。

返回型別

如果函式沒有按照預期次數被呼叫,tracker.verify() 函式將丟擲錯誤。

示例

在下面的示例中:

  • 首先,我們建立一個呼叫跟蹤器物件。

  • 然後我們將函式func包裝在包裝函式funccall內。

  • 我們沒有向 Node.js tracker.calls() 函式的exact引數傳遞任何值,它將取 1 作為預設值。因此,預期函式func至少應被呼叫一次。

const assert = require('assert');
const tracker = new assert.CallTracker();
function func() {}
const funccall = tracker.calls(func);
funccall();
funccall();
tracker.verify();

輸出

/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)

注意 - 有時線上編譯器可能無法給出預期的結果,因此我們會在本地執行以上程式碼。

從下面的輸出中可以看到,函式func被呼叫了兩次,因此 tracker.verify() 函式將丟擲錯誤。

track_verify

示例

在下面的示例中,我們將 4 傳遞給 Node.js tracker.calls() 函式的exact引數。因此,預期函式func至少應被呼叫四次。

const assert = require('assert');
const tracker = new assert.CallTracker();
function func() {}
const funccall = tracker.calls(func, 4);
funccall();
funccall();
tracker.verify();

輸出

/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)

注意 - 有時線上編譯器可能無法給出預期的結果,因此我們會在本地執行以上程式碼。

從下面的輸出中可以看到,函式func僅被呼叫了兩次,因此 tracker.verify() 函式將丟擲錯誤。

track_verify

示例

在下面的示例中,函式func被呼叫的次數符合預期。

const assert = require('assert');
const tracker = new assert.CallTracker();
function func() {}
const funccall = tracker.calls(func, 4);
funccall();
funccall();
funccall();
funccall();
tracker.verify();

輸出

/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.verify() 函式不會丟擲任何錯誤。

// Returns nothing
nodejs_assert_module.htm
廣告