Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ฟังก์ชัน assert.rejects() ใน Node.js


โมดูลยืนยันมีฟังก์ชันต่างๆ มากมายที่ใช้สำหรับการยืนยันฟังก์ชัน ฟังก์ชัน assert.rejects จะรอฟังก์ชัน async ที่ส่งผ่านสัญญา 'asyncfn' หาก asyncfn เป็นฟังก์ชัน มันจะเรียกใช้ฟังก์ชันนี้ทันทีและจะรอจนกว่าสัญญาที่ส่งคืนจะเสร็จสมบูรณ์ จากนั้นจะตรวจสอบคำมั่นสัญญาว่าจะถูกปฏิเสธ

ไวยากรณ์

assert.rejects(asyncfn, [error], [message])

พารามิเตอร์

พารามิเตอร์ข้างต้นอธิบายไว้ด้านล่าง −

  • คุณค่า – นี่คือฟังก์ชัน async ซึ่งจะส่งข้อผิดพลาดพร้อมกัน

  • ข้อผิดพลาด – พารามิเตอร์นี้สามารถเก็บฟังก์ชัน Class, Regular Expression, Validation หรืออ็อบเจ็กต์ที่จะทดสอบคุณสมบัติแต่ละรายการ (พารามิเตอร์เสริม)

  • ข้อความ – นี่เป็นพารามิเตอร์เสริม นี่คือข้อความที่ผู้ใช้กำหนดเมื่อเรียกใช้ฟังก์ชัน

การติดตั้งโมดูลยืนยัน

npm install assert

โมดูลยืนยันเป็นโมดูล inbuilt Node.js ดังนั้นคุณสามารถข้ามขั้นตอนนี้ได้เช่นกัน คุณสามารถตรวจสอบเวอร์ชันยืนยันได้โดยใช้คำสั่งต่อไปนี้เพื่อรับโมดูลการยืนยันล่าสุด

npm version assert

การนำเข้าโมดูลในฟังก์ชันของคุณ

const assert = require("assert").strict;

ตัวอย่าง

สร้างไฟล์ที่มีชื่อ – assertRejects.js และคัดลอกข้อมูลโค้ดด้านล่าง หลังจากสร้างไฟล์แล้ว ให้ใช้คำสั่งด้านล่างเพื่อรันโค้ดนี้

node assertRejects.js

assertRejects.js

/// Importing the module
const assert = require('assert').strict;

(async () => {
   assert.strictEqual(21,20)
   await assert.rejects(
   async () => {
      throw new TypeError('Value passed is Incorrect !');
   },
   (err) => {
      assert.strictEqual(err.name, 'TypeError');
      assert.strictEqual(err.message, 'Incorrect value');
      return true;
   }
   ).then(() => {
      console.log("This is a reject demp")
   });
})();

ผลลัพธ์

C:\home\node>> node assertRejects.js
(node:259525) UnhandledPromiseRejectionWarning: AssertionError
[ERR_ASSERTION]: Input A expected to strictly equal input B:
+ expected - actual
- 21
+ 20
   at /home/node/test/assert.js:5:9
   at Object. (/home/node/test/assert.js:18:3)
   at Module._compile (internal/modules/cjs/loader.js:778:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
   at Module.load (internal/modules/cjs/loader.js:653:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
   at Function.Module._load (internal/modules/cjs/loader.js:585:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
   at startup (internal/bootstrap/node.js:283:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
(node:259525) 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(). (rejection id: 1)
(node:259525) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

ตัวอย่าง

ลองดูอีกตัวอย่างหนึ่ง

// Importing the module
const assert = require('assert').strict;

(async () => {
   assert.strictEqual(21,21)
   await assert.rejects(
      async () => {
         throw new TypeError('Value passed is Incorrect !');
      },
      (err) => {
         assert.strictEqual(err.name, 'TypeError');
         assert.strictEqual(err.message, 'Value passed is Incorrect !');
         return true;
      }
      ).then(() => {
         console.log("This is a reject demo success")
   });
})();

ผลลัพธ์

C:\home\node>> node assertRejects.js
This is a reject demo success