JavaScript

【APIサーバー】データ一覧取得するAPIのテストを作成する

どうも、つよぽんです!

今回は「APIサーバーを実装するシリーズ」の第4回目の記事となります。

前回記事「【APIサーバー】データ一覧取得するAPIを追加【Controller実装】」をまだ読んでいなくて、APIサーバーの実装経験が無い方は前回記事を読んでおくことをおすすめします。

第4回目の今回は、前回実装した「データ一覧を取得するAPI」のテストコードを実装していきます。

今回の記事内容は、以下のリンク先で使っているスライドの一部を補足した記事になります。

実際に手を動かしながら覚えたい方は、以下のスライドも参考にすると良いでしょう。

あわせて読みたい
【テスト実装】Todo一覧を取得するAPIのテストを実装する今回はAPIのテストコードを書く方法を学習します。expressでサーバーのテストを書くときに便利な「supertest」というライブラリを使う以外は、今まで学習したテストコードの書き方と同じになります。今回の記事でサーバーのテストも書けるようになりましょう!...

今回の記事は次のような方に向けて書きました。

想定読者
  1. APIサーバーの実装の流れを理解したい方
  2. APIのテストを実装する方法を知りたい方

この記事を読み終えた後のあなたは次のことがわかるようになっています。

この記事を読み終えた後のあなた
  • APIのテストが実装できるようになる

それでは以下の内容で話を進めていきます。

今回の内容
  1. 事前準備 : 必要なライブラリのインストール
  2. index.jsの修正
  3. APIのテストコードの実装

事前準備 : 必要なライブラリのインストール

supertestをインストール

今回はAPIの動作をテストするのに便利なライブラリ「supertest」を使います。

「supertest」もmocha・power-assertと同様にテストツールの1つになるので、「devDependencies」の方に追加します。

以下の画像のように「npm install -D supertest」でsupertestをインストールします。(※画像をクリックすると別タブで画像が開きます)

supertestをインストールした様子supertestをインストールした様子

index.jsの修正

前回までのコード

以下の画像のコードは、前回記事「【APIサーバー】データ一覧取得するAPIを追加【Controller実装】」で作成したindex.jsの内容になります。(※画像をクリックすると別タブで画像が開きます)

前回までのindex.js前回までのindex.js

今回は「supertest」を使ってAPIのテストを実装します。

そして、supertestでは「const app = express();」で作成したappオブジェクトを利用します。

つまり、上の画像内のコードから「appオブジェクト」を「module.exports」で公開して、別ファイルからでも「appオブジェクト」を利用できるようにします。

app.jsを作成する

以下の画像は、index.jsからサーバー設定周りのコードだけを抜き出した部分になります。(※画像をクリックすると別タブで画像が開きます)

app.jsにサーバー設定周りのコードを移植する(サーバーの起動(app.listen)はしない)app.jsにサーバー設定周りのコードを移植する(サーバーの起動(app.listen)はしない)

ここで1つ注意点として、「app.listen」、つまりサーバー起動をapp.jsで行なっていない点があります。

supertestにappオブジェクトを渡すと、明示的に「app.listen」をしなくても、supertestの内部で色々と良きに図らって、リクエスト・レスポンスを受け取れるようになります。(おそらくsupertestの内部で、app.listenを実行していると思われる。)

そのことから、supertestでは「app.listen」されていない状態の「appオブジェクト」を渡したいため、app.jsでは「app.listen」でサーバーを起動しないようにします。

index.jsでapp.jsを読み込んで「app.listen」する

index.jsからサーバー設定周りのコードを「app.js」に移植して、app.jsでは「app.listen」しないことを説明しました。

それでは、「npm start」でサーバーを起動するとき、どのようにして「app.listen」を実行してサーバーを起動させるのでしょうか?

答えは、以下の画像の通りです。(※画像をクリックすると別タブで画像が開きます)

「index.js」で「app.js」を読み込んで、サーバー起動コードを実装する「index.js」で「app.js」を読み込んで、サーバー起動コードを実装する

上の画像でやっていることをまとめると次の通りです。

  1. index.jsからapp.jsを読み込む(appオブジェクトを取得する)
  2. 読み込んだappオブジェクトを使って「app.listen」を実行してサーバーを起動する

これで、今までどおり「npm start」でサーバーを起動することが出来るようになりました。

APIのテストコードの実装

APIのテストコードに関しては、1つ1つ画像を切り出して説明すると長くなってしまうので、以下のスライドの10ページ目以降を参考にしていただけたらと思います。(※スライドが見づらい場合は全画面モードで見ていただけたらと思います)

 

まとめ

今回の話をまとめると次のとおりです。

今回のまとめ
  • APIのテストを実装するために「supertest」をインストールした
  • 「index.js」からサーバー設定周りのコードを抜き出して「app.js」に移植した
  • スライドの10ページ以降からsupertestを使ったAPIのテストコードの実装内容を解説した

今回の内容は以下の記事内のスライドでも学習できます。

あわせて読みたい
【テスト実装】Todo一覧を取得するAPIのテストを実装する今回はAPIのテストコードを書く方法を学習します。expressでサーバーのテストを書くときに便利な「supertest」というライブラリを使う以外は、今まで学習したテストコードの書き方と同じになります。今回の記事でサーバーのテストも書けるようになりましょう!...
【3つの特典付き】Webエンジニアに必要な基礎スキルを体系的に効率良く身につけたいですか?

LINE登録で無料特典を受け取る

次のような方向けに、学習をサポートするコンテンツを無料プレゼントしています。

  • Webエンジニアになりたいけど何から学習を始めれば良いかわからない
  • 今まで独学で頑張ってきたけど、独学に限界を感じてきた
  • プログラミングは出来るけど、大きめのコードが書けない

「プレゼント詳細が知りたい」「プレゼントを受け取りたい」といった方は、以下のボタンをクリックして詳細ページをご確認ください。

無料特典を受け取る

 

COMMENT

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