Node.js の assert.ok() 関数とは?構文・パラメータ・実行例を徹底解説
Node.js の assert モジュールは、関数のアサーション(値や条件が期待どおりであることの検証)を行うためのさまざまな機能を提供します。その中でも assert.ok() は、渡された値が「真(truthy)」であるかどうかを判定する関数です。もし評価結果が真でなかった場合には、AssertionError をスローします。
構文
assert.ok(value, [message])
パラメータ
各パラメータの詳細は以下のとおりです。
value ― 検証対象となる値です。この値が
assert.ok()によって真偽判定されます。message ― 任意指定のパラメータです。アサーションに失敗した際に出力される、ユーザー定義のカスタムメッセージを設定できます。
assert モジュールのインストール
npm install assert
なお、assert モジュールは Node.js に標準で組み込まれているため、この手順は省略しても問題ありません。最新バージョンの assert モジュールを使用したい場合は、以下のコマンドで現在のバージョンを確認できます。
npm version assert
モジュールの読み込み方法
スクリプト内で assert モジュールを使用するには、以下のように require を使って読み込みます。
const assert = require("assert").strict;
実行例①:検証が成功するケース
まずは「assertOk.js」という名前のファイルを作成し、以下のコードをコピーしてください。ファイル作成後、次のコマンドでプログラムを実行できます。
node assertOk.js
assertOK.js
// モジュールを読み込む
const assert = require('assert').strict;
try {
// 値の型をチェック
assert.ok(typeof 21 === 'number');
console.log("NO ERROR!")
} catch(error) {
console.log("Error: ", error)
}
出力結果
C:\home\node>> node assertOk.js NO ERROR!
この例では typeof 21 === 'number' が真と評価されるため、アサーションは成功し、「NO ERROR!」が出力されます。
実行例②:検証が失敗するケース
続いて、アサーションが失敗するケースを見てみましょう。
// モジュールを読み込む
const assert = require('assert').strict;
try {
// 値の型をチェック
assert.ok(typeof 21 === 'string');
console.log("NO ERROR!")
} catch(error) {
console.log("Error: ", error)
}
出力結果
C:\home\node>> node assertOk.js
Error: { AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy
value:
assert.ok(typeof 21 === 'string')
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: true,
name: 'AssertionError [ERR_ASSERTION]',
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==' }
この例では 21 の型は number 型であるため、typeof 21 === 'string' は偽(falsy)と評価されます。その結果、assert.ok() は AssertionError をスローし、catch ブロック内のエラーメッセージが出力されます。
まとめ
assert.ok() は、値が真であることを簡潔に保証したいときに便利な関数です。テストコードやデバッグ時に条件の妥当性を素早くチェックできるため、Node.js アプリケーション開発において覚えておくと非常に役立ちます。
-
JavaScriptの関数プロトタイプとは?仕組みと使い方を解説
JavaScriptで作成されたすべての関数には、JavaScriptエンジンによって自動的にprototypeプロパティが追加されます。このprototypeプロパティはオブジェクトであり、デフォルトではconstructorプロパティを含んでいます。関数のプロトタイプには、以下のようにしてアクセスできます。functionName.prototypeコンストラクタ関数を使ってオブジェクトを生成する場合、このprototypeプロパティを活用することで、同じコンストラクタから作成された複数のオブジェクト間でメソッドやプロパティを効率的に共有することができます。これにより、各インスタンスごとに
-
JavaScriptでのメソッド借用:call()・apply()・bind()の使い方を解説
JavaScriptでは、call()、apply()、bind()という3つのメソッドを使うことで、あるオブジェクトが持つメソッドを別のオブジェクトが「借用」できます。これは、本来そのメソッドを持たないオブジェクトに対して、thisの参照先を差し替えてメソッドを実行できる便利なテクニックです。 3つのメソッドの違い call():引数をカンマ区切りで個別に渡し、即座に関数を実行します。 apply():引数を配列(または配列風オブジェクト)として渡し、即座に関数を実行します。 bind():thisを固定した新しい関数を返すだけで、即座には実行されません。返された関数は後から好きなタイミン