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

Node.jsのassert.fail()関数とは?使い方と実行例を徹底解説

Node.jsのassertモジュールは、関数のアサーション(値や条件の検証)を行うための多彩な機能を提供しています。その中のassert.fail()関数は、条件のチェックを行うことなく、即座にアサーションエラーをスローする特殊な関数です。スローされるエラーには、デフォルトのメッセージ、または引数として渡した任意のメッセージが含まれます。テストを意図的に失敗させたい場合などに活用できます。

構文

assert.fail(message)

パラメータ

各パラメータの詳細は以下の通りです。

  • message – 省略可能なパラメータです。関数が実行されたときに出力される、ユーザー定義のメッセージを指定します。文字列だけでなく、Errorオブジェクトのインスタンスも渡せます。

assertモジュールのインストール

npm install assert

assertモジュールはNode.jsに組み込まれているため、このステップは省略しても問題ありません。最新バージョンのassertモジュールを確認したい場合は、以下のコマンドを使用します。

npm version assert

モジュールのインポート方法

コード内でassertモジュールを使うには、まずrequireで読み込みます。

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

使用例①:基本的な使い方

「assertFail.js」という名前のファイルを作成し、以下のコードをコピーしてください。ファイル作成後は、次のコマンドでコードを実行できます。

node assertFail.js

assertFail.js

// モジュールの読み込み
const assert = require('assert').strict;

// 関数の呼び出し
try {
    assert.fail("Error Occured");
} catch(error) {
    console.log("Error:", error)
}

出力結果

C:\home\node>> node assertFail.js
Error: { AssertionError [ERR_ASSERTION]: Error Occured
      at Object. (/home/node/mysql-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: undefined,
expected: undefined,
operator: 'fail' }

文字列を引数に渡すと、そのメッセージを持つAssertionError(ERR_ASSERTION)が生成され、catchブロックで捕捉できていることがわかります。

使用例②:カスタムエラーを渡す場合

続いて、もう一つの例を見てみましょう。

// モジュールの読み込み
const assert = require('assert').strict;

// 関数の呼び出し
try {
    assert.fail(new TypeError("Custom Defined Error: Not Supported"));
} catch(error) {
    console.log("Error:", error)
}

出力結果

C:\home\node>> node assertFail.js
Error: TypeError: Custom Defined Error: Not Supported
    at Object. (/home/node/mysql-test/assert.js:6:14)
    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)

この例では、カスタムエラーであるTypeErrorを引数として渡しています。assert.fail()にErrorオブジェクトのインスタンスを渡した場合は、AssertionErrorではなく、渡されたカスタムエラーがそのままスローされる点に注意してください。

まとめ

  • assert.fail()は、条件判定なしで必ずエラーをスローする関数です。

  • 引数に文字列を渡すと、そのメッセージを含むAssertionErrorが発生します。

  • 引数にErrorオブジェクトのインスタンスを渡すと、そのエラーがそのままスローされます。

  • 意図的にテストを失敗させたい場面や、未実装の処理を明示したい場合に便利です。


  1. JavaScriptの「is not a constructor」エラーとは?原因と解決方法をわかりやすく解説

    JavaScriptで「TypeError: 〇〇 is not a constructor(コンストラクターではありません)」というエラーが発生するのは、コンストラクターとして呼び出せないオブジェクトや変数に対して new 演算子を使った場合です。 たとえば、数値や文字列などのプリミティブ値、あるいはアロー関数は new によるインスタンス化に対応していないため、このエラーがスローされます。 エラーが発生するコード例 以下は、数値型の変数をコンストラクターとして呼び出し、「not a constructor」エラーを発生させるサンプルコードです。 <!DOCTYPE html>

  2. Windows 10でLoadLibrary関数がSTATUS_DLL_NOT_FOUNDエラーを返す原因と対処法

    本記事では、Windows 10の偽装(Impersonation)スレッド上でLoadLibrary関数を呼び出した際に、STATUS_DLL_NOT_FOUNDエラーが返される原因について詳しく解説します。あわせて、この問題を回避するための対処法もご紹介します。 偽装(Impersonation)とは 偽装(Impersonation)とは、スレッドがそのスレッドを所有するプロセスとは異なるセキュリティ情報を使用して実行できる機能のことです。これにより、スレッドは別のユーザーやプロセスのセキュリティコンテキストで動作することが可能になります。 STATUS_DLL_NOT_FOUNDエラ