express をテストするために supertest を利用します。 supertest は request() に指定できるパラメータとして express のオブジェクトまたは URL を指定できます。
-
request() に express オブジェクトを指定した場合
テストするプロセスと express の http サーバーは同プロセスとなります。このため mock-fs などのモックが利用できます。
コードは expess-obj ディレクトリにあります。app.js が express のコードで test.js がテストコードです。
テストコードの 'using mock-fs' では mock-fs を利用したテストを記述しています。
テスト実行方法はnpm test
です。 -
request() に express オブジェクトを指定する場合
テストするためにあらかじめ express サーバーを起動する必要があります。
このため、express サーバーとテストプロセスが異なります。このため mock-fs などのモックが利用できません。
コードは url ディレクトリにあります。
上記 express-obj とほとんど同じコードですが、テストコードの 'using mock-fs' が失敗します。
異なるところは app.js で express サーバーを listen して起動しているところです。
テスト実行方法 はじめにnode app.js
で express サーバーを起動しておきます。続いてnpm test
でテストを実行します。(テストに失敗します)