tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

RSpec: featuresディレクトリ内のspecで、直接HTTPリクエストを送信したいとき。

やりたいこと

こんなの

 before { delete user_path(user) }
  • これはuser_path(user)にDELETEリクエストを発行する。
  • しかし、featuresディレクトリ内のスペックではできない。

解決策

  • type: :requestdescribeの後に付ける。

具体例

describe "submitting a DELETE request to the Users#destroy action", type: :request do
  before { delete user_path(user) }
  specify { expect(response).to redirect_to(root_url) }
end

個々のエグザンプルに書くのがめんどくさいときは、一番上のものに付けてしまえばよい。

おまけ

逆に、requestディレクトリ内のspecでfeatures用のテストをしたいときは、(Capybaraを使う等) 同様にtype: :featuresをつける。

リンク

間違いがあれば、ご指摘下さると幸いです。