[2019-07-09追記] 当ブログの下記記事の方が、新しくて簡潔かもしれません。
MochaとChaiでなんでもテスト ~WebAPI編~ - キリウ君が読まないノート
準備
根本的なところから書いときます。
まずNode.jsをインストールしてパスを通し、node
および npm
コマンドを使えるようにしておきます。Windowsの場合、Node.jsをインストールしたフォルダの直下に通せばOKです。
任意のカラのフォルダを作成し、コマンドプロンプトで cd
で当該フォルダに移動して以下コマンドを実行します。いろいろ聞かれますが、全部何も入力せずにエンターキーでOKです。
その後、以下コマンドを実行して、必要なものをインストールします。これらは自動的に作成された node_modules
フォルダにダウンロードされます。
Web APIの仕様
この記事のプログラムで叩く、架空のWeb APIの仕様です。一応RESTfulですが、架空なのでガバガバです。
URL https://api.example.com/user/update
で、次のように呼び出すWeb APIが存在するとします。
- リクエストメソッドはPOST。
- リクエストヘッダは
Content-Type: application/json
が必須。
- リクエストボディはJSON形式で、キー
user_id
および name
を設定する。
想定されるレスポンスは、とりあえずここでは以下のものだけとします。
問題なし (正常系)
ステータスコードは200、レスポンスボディは以下のJSONです。
リクエストボディがJSON形式ではない場合
ステータスコードは400、レスポンスボディは以下のJSONです。
リクエストボディに user_id
が含まれてない場合
ステータスコードは422、レスポンスボディは以下のJSONです。
テストプログラムを書く
この架空のWeb APIについて、想定されるレスポンスをテストするプログラムを書きます。
基本的なところは以下の記事を参考にさせていただきました。
ユニットテストって何?って人向けのmochaとchaiの使い方 - Qiita
mocha
と chai.assert
の詳細は、公式サイトを参照してください。
Mocha - the fun, simple, flexible JavaScript test framework
Assert - Chai
準備したフォルダに test.js
ファイルを作成し、内容を以下のサンプルコードの通りにします。
一番上にPromise化した request
なるものがありますが、これは request
を使ったテストを async
/await
ですっきり書くためのものです。リクエスト自体に成功さえすれば、常に生のレスポンスオブジェクトを resolve
に渡すようになってます。
起動方法
この時点で、用意したフォルダの中身はこうなってます。
コマンドプロンプトでカレントディレクトリが当該フォルダになっていることを確認し、以下コマンドを実行します。
すると先程のテストプログラムが実行されます。
今回のWeb APIがもし実在するなら、以下のような感じで結果が表示されるはずです。
以上です。