node.jsのソースを単体テストするmocha+chaiの使い方

求人

node.jsのソースを単体テストするmocha+chaiの使い方についてです。

ここでは、mocha4.0.0、chai4.1.2を使用しています。

まずchaiをrequireして、assertというchaiのAPIを使用します。

次にテストしたいコードを書きます。

テストは、mochaが用意してくれているdescribeメソッドを使用します。

以下、簡単な記述例です。

describeの第一引数は、テストタイトルです。第二引数がcallback関数となっており、その中に、itメソッドを記述します。このitメソッド単位にテストを実行します。

その為、describeの中にはitメソッドはいくつでも記述することができます。

assert.strictEqualメソッドの第一引数と第二引数を比較します。

上記のファイルを「index.test.js」として保存します。

コマンドプロンプトから以下のように実行します。

結果は以下のようにOKなら緑色になります。NGなら赤色になります。

node.jsのソースを単体テストするmocha+chaiの使い方

describe.skip

describe.skip~とすることで、その中のitテストは全てスキップされます。

describe.only

describe.only~とすることで、その中のitテストだけをテストすることができます。

it.only~とすることもできます。

これはよく使いますが、最後はonlyを削除するのを忘れないように注意してください。

describeの入れ子

describeの中にdescribeを書くことができます。

beforeEach

mochaにはbeforeEachと言うメソッドが用意されています。

beforeEachはdescribeの中、かつ、itの上に書きます。

各itテストの前でbeforeEachが実行されます。使い方の例としては、テストデータをインサートしたりとかでしょうか。

以下、記述例です。

afterEach

これはbeforeEachとは逆に、各itの終わりに実行されます。

エラー

ResourceInUseException: Table already exists: テーブル名

…そのテーブルが既に存在する場合にcreateTableすると発生する。

Promiseオブジェクトを比較する方法

Promiseオブジェクトをアサーションするのは少し難しいです。

が、chai-as-promisedモジュールを使えば簡単に比較することができるようになります。

インストールは以下のとおりです。

7.1.1をインストールしました。まず、chai-as-promisedを使わずに、以下のようなテストを実行してみます。

結果は以下のようにエラーとなります。

次にchai-as-promisedを使ってみます。

chai.useを使用します。

expectの引数にPromiseオブジェクトを指定し、to.deep.equalではなく、to.deep.eventually.equalを使用します。

引数にはプロミスオブジェクトの結果を指定します。上記では、123になります。

このテストを実行すると結果は以下のように成功します。

参考サイト

chaiのエラー出力情報を無制限にする

chaiでエラーがでたとき{Objects}、、、というように簡素化されて表示されるのでObjectのどこが一致していないのか判断しづらいです。これを無制限に出力するには以下を記述することでObjectの中身を出力してくれるようになります。

テストする

期待値と実際値を比較しますが、方法は無数にあります。

関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
Python3.6,Djangoを勉強中です,Javaは少し飽きてしまってます–;
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくば、我に七難八苦を与えたまえ」です^^

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA