• 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
广告