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

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

Node.jsのassertモジュールは、プログラム内で値や条件を検証する(アサーションを行う)ための多彩な機能を提供する組み込みモジュールです。その中でもassert.notEqual()は、「2つの値が等しくないこと」を確認するために使用されるメソッドです。もし比較した両者の値が等しかった場合には、AssertionErrorがスローされます。

構文

assert.notEqual(actual, expected, [message])

パラメータ

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

  • actual — 検証の対象となる実際の値を指定します。

  • expected — actualと比較される期待値を指定します。

  • message — 省略可能なパラメータです。エラー発生時に表示される、ユーザー独自のエラーメッセージを設定できます。

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

npm install assert

assertモジュールはNode.jsに標準で組み込まれているため、通常はこのインストール作業を省略できます。ただし、最新バージョンのassertモジュールを使用したい場合は、以下のコマンドで現在のバージョンを確認できます。

npm version assert

モジュールのインポート

コード内でassertモジュールを使用するには、まずrequireを使ってインポートします。.strictを付けることで、厳密(strict)モードのアサーション関数を利用できます。

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

使用例1:値が等しくない場合

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

node notEqual.js

notEqual.js

// モジュールのインポート
const assert = require('assert').strict;

var a = 3;
var b = "3";

try {
    // a と b が等しくないかチェック
    assert.notEqual(a, b)
    console.log("a & b are not equal")
} catch(error) {
    console.log("Error Occured: ", error)
}

実行結果

C:\home\node>> node notEqual.js
a & b are not equal

この例では、数値の 3 と文字列の "3" を比較しています。assert.notEqual()は厳密不等価演算子(!==)と同様の比較を行うため、型が異なるこれら2つの値は「等しくない」と判断され、正常に処理が完了します。

使用例2:値が等しい場合

続いて、同じ値同士を比較した場合の動作を見てみましょう。

// モジュールのインポート
const assert = require('assert').strict;

var a = 3;
var b = 3;

try {
    // a と b が等しくないかチェック
    assert.notEqual(a, b)
    console.log("a & b are not equal")
} catch(error) {
    console.log("Error Occured: ", error)
}

実行結果

C:\home\node>> node notEqual.js
Error Occured: { AssertionError [ERR_ASSERTION]: Identical input passed to
notStrictEqual: 3
    at Object.<anonymous> (/home/node/test/assert.js:10: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: true,
name: 'AssertionError [ERR_ASSERTION]',
code: 'ERR_ASSERTION',
actual: 3,
expected: 3,
operator: 'notStrictEqual' }

この例では ab の両方が数値の 3 で等しいため、assert.notEqual()は検証に失敗し、AssertionError [ERR_ASSERTION] がスローされます。エラーメッセージ内の operator: 'notStrictEqual' という情報からも、この関数が厳密な比較を行っていることがわかります。

このように、assert.notEqual()はテストコードやデバッグ時に「特定の値が意図せず一致していないか」を保証したい場面で非常に便利な機能です。

  1. JavaScriptの関数プロトタイプとは?仕組みと使い方を解説

    JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに

  2. JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説

    JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン