Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

Node.jsのassert.doesNotThrow()関数


アサートモジュールは、関数アサーションに使用されるさまざまな機能を提供します。 assert.doesNotThrowは、関数がエラーをスローできないことを表明します。 assert .doesNotThrowが呼び出されると、すぐに「fn」が呼び出されます。

構文

assert.doesNotThrow(fn, [error], [message])

パラメータ

上記のパラメータは以下のように記述されます-

  • fn –この関数は、assert.doesNotThrowが実行されたときに呼び出されます。エラーをスローする代わりに、この関数を呼び出します。

  • エラー –このパラメーターには、指定されたエラーの正規表現が含まれています。これはオプションのパラメータです。

  • メッセージ –これはオプションのパラメーターです。これは、関数の実行時に出力されるユーザー定義のメッセージです。

アサートモジュールのインストール

npm install assert

assertモジュールは組み込みのNode.jsモジュールであるため、この手順をスキップすることもできます。次のコマンドを使用してアサートバージョンを確認し、最新のアサートモジュールを取得できます。

npm version assert

関数にモジュールをインポートする

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

「doesNotThrow.js」という名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、以下のコマンドを使用してこのコードを実行します。

node doesNotThrow.js

doesNotThrow.js

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

try {
   // Calling the doesNotThrow method to stop throwing error
   assert.doesNotThrow(
      () => {
         throw new TypeError('Wrong value received. Please check !');
      },
   );
} catch(error) {
   console.log("Error:", error)
}

出力

C:\home\node>> node doesNotThrow.js
Error: { AssertionError [ERR_ASSERTION]: Got unwanted exception.
Actual message: "Wrong value received. Please check !"
   at Object. (/home/node/test/assert.js:6:9)
   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)
generatedMessage: false,
name: 'AssertionError [ERR_ASSERTION]',
code: 'ERR_ASSERTION',
actual:
   TypeError: Wrong value received. Please check !
      at assert.doesNotThrow (/home/node/test/assert.js:8:9)
      at getActual (assert.js:567:5)
      at Function.doesNotThrow (assert.js:687:32)
      at Object. (/home/node/test/assert.js:6:9)
      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),
   expected: undefined,
   operator: 'doesNotThrow' }

もう1つの例を見てみましょう。

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

try {
   assert.doesNotThrow(
      () => {
         throw new TypeError('Value passed is wrong !!');
      },
      /abcd/,
      'Whoops'
   );
} catch(error) {
   console.log("Error:", error)
}

出力

C:\home\node>> node doesNotThrow.js
Error: TypeError: Value passed is wrong !!
   at assert.doesNotThrow (/home/node/test/assert.js:7:9)
   at getActual (assert.js:567:5)
   at Function.doesNotThrow (assert.js:687:32)
   at Object. (/home/node/test/assert.js:5:9)
   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)

  1. JavaScriptの関数プロトタイプ

    JavaScriptで作成された関数には、JavaScriptエンジンによって追加されたプロトタイププロパティが常にあります。プロトタイププロパティは、デフォルトでコンストラクタプロパティを含むオブジェクトです。関数protoypeには、-からアクセスできます。 functionName.prototype オブジェクトが関数コンストラクターを使用して作成されている場合、このプロトタイププロパティを使用して、その関数コンストラクターによって作成されたオブジェクト間でメソッドまたはプロパティを共有できます。 以下は、JavaScriptの関数プロトタイプのコードです- 例 <!DOCT

  2. JavaScriptでの関数の借用。

    call()、apply()、bind()は、JavaScriptのメソッドを借用するために使用されます。 以下は、JavaScriptでメソッドを借用するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> &