Node.js assert.rejects()函数
assert 模块提供了一组用于验证不变量的断言函数。 assert.rejects()函数等待 asyncFn 承诺,或者如果 asyncFn 是一个函数,那么它会立即调用该函数并等待返回的承诺完成,然后它将检查承诺是否被拒绝。
句法:
assert.rejects(asyncFn[, error][, message])
参数:此函数接受上面提到的以下参数,如下所述:
- asyncFn:此参数是异步函数,同步抛出错误。
- 错误:此参数的类型可以是 Class 或正则表达式或验证函数或将测试每个属性的对象。它是一个可选参数。
- message:如果 asyncFn 拒绝失败,此参数将是 AssertionError 提供的消息。它是一个可选参数。
返回值:此函数返回对象类型的断言错误。
安装断言模块:
- 您可以访问安装断言模块的链接。您可以使用此命令安装此软件包。
npm install assert
注意:安装是一个可选步骤,因为它是内置的 Node.js 模块。
- 安装 assert 模块后,您可以使用命令在命令提示符下检查您的断言版本。
npm version assert
- 之后,您可以创建一个文件夹并添加一个文件,例如 index.js,如下所示。
示例 1:文件名:index.js
// Requiring the module
const assert = require('assert').strict;
// Function call
(async () => {
assert.strictEqual(1,2)
await assert.rejects(
async () => {
throw new TypeError('Wrong value');
},
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, 'Wrong value');
return true;
}
).then(() => {
console.log("Reject Demo")
});
})();
运行程序的步骤:
- 项目结构将如下所示:
- 使用以下命令运行index.js文件:
node index.js
输出:
(node:12704) UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]: Expected
values to be strictly equal:1 !== 2
at C:\Users\Lenovo\Downloads\Geeksforgeeks Internship\index.js:25:12
at Object. (C:\Users\Lenovo\Downloads\Geeksforgeeks Internship\NEW\Assert Function
\index.js:38:3)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
(node:12704) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This
error originated either by throwing inside of an async function without a catch block,
or by rejecting a promise which was not handled with .catch(). To terminate the node
process on unhandled promise rejection, use the CLI flag `–unhandled-rejections=strict`
(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode).
(rejection id: 1)
示例 2:文件名:index.js
// Requiring the module
const assert = require('assert').strict;
// Function call
(async () => {
assert.strictEqual(1,1)
await assert.rejects(
async () => {
throw new TypeError('Wrong value');
},
(err) => {
assert.strictEqual(err.name, 'TypeError');
assert.strictEqual(err.message, 'Wrong value');
return true;
}
).then(() => {
console.log("Reject Demo Works Successfully")
});
})();
运行程序的步骤:
- 项目结构将如下所示:
- 使用以下命令运行index.js文件:
node index.js
输出:
Reject Demo Works Successfully
参考: https://nodejs.org/dist/latest-v12.x/docs/api/assert.html#assert_assert_rejects_asyncfn_error_message