Controller Specs vs Request Specs?

jsanch16 picture jsanch16 · Nov 28, 2016 · Viewed 11.8k times · Source

I'm working on a rails API and I'm now planning on writing some RSpec tests for the controllers. I've been reading around and I haven't been able to figure out what the actual difference between controller specs and request specs are and which one I should probably use if I'm testing an API.

Answer

Quv picture Quv · Sep 30, 2017

Indeed, the RSpec team officially states controller specs are now obsolete.

http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/

For new Rails apps: we don't recommend adding the rails-controller-testing gem to your application. The official recommendation of the Rails team and the RSpec core team is to write request specs instead. Request specs allow you to focus on a single controller action, but unlike controller tests involve the router, the middleware stack, and both rack requests and responses. This adds realism to the test that you are writing, and helps avoid many of the issues that are common in controller specs. In Rails 5, request specs are significantly faster than either request or controller specs were in rails 4, thanks to the work by Eileen Uchitelle1 of the Rails Committer Team.