RspecでHTTPのリクエスト・レスポンスのテストを行った
rspecでHTTPのリクエスト・レスポンスのテストを行った。
今回も、ごみシリーズです。
ごみ収集日の検索をLineからできるようにした - takapi86のブログで、APIを作っていく中で、rspecでのテストでHTTPのリクエスト・レスポンスのテストができるということを知ったので、メモして起きます。
事前準備
対象
- ごみ収集日の検索をLineからできるようにした。にも書いてありますが、ゴミ収集APIには以下のエンドポイントがあります。
今回は上記のうち、収集場所名を前方一致で検索し、一覧で返すAPI
のテストを書きたいと思います。
導入
rspecのテストファイルは以下の場所 * spec/requests/towns_spec.rb
- 今回はTownsControllerのテストで、リクエストを投げて確認するため、以下のように記述します。
describe TownsController, type: :request do end
- エンドポイントはGETメソッドで、
/towns/:name
なので以下のように記述します。
describe TownsController, type: :request do describe 'GET /towns/:name' do end end
- ステータスコードは200で返ってくるのを期待するテストを追加します。
- ここでは省略していますが、事前にFactoryGirl等でテストデータを生成するようにすると良いでしょう。
describe TownsController, type: :request do describe 'GET /towns/:name' do it '200 OK を返す' do get URI.escape("/towns/#{"日吉"}") expect(response.status).to eq(200) end end end
- 事前にFactoryGirl等でテストデータを生成するようにすると良いでしょう。
- テストを実行してみましょう。
bundle exec rspec spec/requests/towns_spec.rb Finished in 0.50264 seconds (files took 3.08 seconds to load) 1 example, 0 failures
正常にテストが終了したようです。
今回は、test環境にデータが入った状態でテストを行いましたが、 先ほど言ったように事前にFactoryGirl等でテストデータを生成するようにすると良いでしょう。