Node.jsのassert.strictEqual()関数とは?使い方をコード例付きで解説
Node.jsのassertモジュールは、関数のアサーション(検証)を行うためのさまざまな機能を提供しています。その中でもassert.strictEqual()は、2つのオブジェクトや引数が「厳密に」等しいかどうかをチェックするために使用される関数です。比較した2つの値が等しくない場合には、アサーションエラー(AssertionError)をスローします。
assert.strictEqual()は内部的に厳密等価演算子(===)を使用しているため、値だけでなくデータ型も一致していないと等しいと判定されません。これは、型変換を行うassert.equal()との大きな違いです。
構文
assert.strictEqual(actual, expected[, message])
パラメータ
上記の各パラメータの詳細は以下の通りです。
actual − 検証対象となる実際の値です。expectedで指定した期待値と照らし合わせて評価されます。
expected − actualの値と照合される期待値です。
message − actualとexpectedが一致しなかった場合に出力される文字列メッセージです。このパラメータは省略可能です。指定しない場合は、デフォルトのエラーメッセージが自動生成されます。
Assertモジュールのインストール
npm install assert
assertモジュールはNode.jsに組み込まれている標準モジュールのため、このインストール手順は省略しても問題ありません。最新バージョンのassertモジュールを確認したい場合は、以下のコマンドを実行してください。
npm version assert
モジュールの読み込み方法
コード内でassertモジュールを使用するには、まずrequire()を使ってモジュールを読み込みます。
const assert = require("assert");使用例1:値が一致する場合
まず、「assertStrictEqual.js」という名前のファイルを作成し、以下のコードをコピーしてください。ファイル作成後、次のコマンドでコードを実行します。
node assertStrictEqual.js
assertStrictEqual.js
// モジュールを読み込む
const assert = require('assert').strict;
var a = "TutorialsPoint";
var b = "TutorialsPoint";
try {
// equal関数を呼び出して等価性をチェック
assert.strictEqual(a, b);
console.log("Actual and expected parameters are equal")
} catch(error) {
console.log("Error: ", error)
}実行結果
C:\home\node>> node assertStrictEqual.js Actual and expected parameters are equal
この例では、変数aとbの両方が文字列"TutorialsPoint"であり、値もデータ型も完全に一致しているため、エラーは発生せずに正常に処理が完了しました。
使用例2:値が一致しない場合
続いて、値が一致しない場合の動作を見てみましょう。
// モジュールを読み込む
const assert = require('assert').strict;
var a = "Welcome to TutorialsPoint";
var b = "TutorialsPoint";
try {
// equal関数を呼び出して等価性をチェック
assert.strictEqual(a, b);
console.log("Actual and expected parameters are equal")
} catch(error) {
console.log("Error: ", error)
}実行結果
C:\home\node>> node assertStrictEqual.js
Error: { AssertionError [ERR_ASSERTION]: Input A expected to strictly equal
input B:
+ expected - actual
- 'Welcome to TutorialsPoint'
+ 'TutorialsPoint'
at Object. (/home/node/test/assert.js:9: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: 'Welcome to TutorialsPoint',
expected: 'TutorialsPoint',
operator: 'strictEqual' }この例では、変数aとbの値が異なるため、assert.strictEqual()によってAssertionError(ERR_ASSERTION)がスローされました。エラーメッセージには、actual(実際の値)とexpected(期待値)の差分が「+」「-」記号付きで表示され、どこが不一致なのかを直感的に把握できるようになっています。
まとめ
assert.strictEqual()は、テストコードなどで値の厳密な一致を検証する際に非常に便利な関数です。try-catchブロックと組み合わせることで、エラー発生時の挙動も柔軟に制御できます。型まで含めて正確に検証したいケースでは、assert.equal()ではなく本関数を使用することをおすすめします。
-
JavaScriptの関数プロトタイプとは?仕組みと使い方を解説
JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに
-
JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説
JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン