Some clarifications that might help your deliberations:

`rspec-rails` maintains controller specs as a parallel to controller tests, 
with the intention that if you wish to continue to use them you bring in the 
`rails-controller-test` gem.

We recommend request specs rather than controller specs for the same reasons 
the Rails team does, thus it is likely rspec-rails will remove support for 
controller specs at the same time Rails does.

Controller specs were always a bit weird, pretending to be unit tests when in 
fact they were a set of limited integration tests with introspection into the 
internals of a controller, I would never recommend asserting on assigns in a 
controller.

Cheers
Jon
----------------
m...@jonrowe.co.uk
https://jonrowe.co.uk

On 30 November 2020 at 17:05, Phil Pirozhkov wrote:
> > In Rails 5, the team changed controller tests to effectively be integration 
> > tests (use URLs instead of actions), don’t test controller instance 
> > variables, don’t test what template is rendered, etc. Instead, you should 
> > test the contents of the page for specifics that indicate the request 
> > completed as expected.
> >
> > With RSpec (at least with 3.1), controller tests in Rails 5 are still based 
> > on the old unit test (Test::Case). So I’m wondering where I should go here?
> As far as I remember, they still are even in rspec-rails 4.0.
>
>
> > It should be noted that I’m just "passing through” Rails 5 on my way to 
> > Rails 6 (or at least 5.2), as that may affect the answer to my question.
> >
> > Here are some of the alternatives I can think of:
> > 1) Stay with current software, use the "rails-controller-testing” to 
> > restore template and assigns testing, and leave it alone for a future 
> > release.
> > 2) Stay with current software, rewrite all of the controller specs as 
> > request specs (and abandon the controller specs).
> > 3) Upgrade to a newer version of RSpec that treats controller specs as 
> > request specs (does this even exist?) and rework the controller specs to 
> > follow the rules of request specs.
> >
>
>
> Depends on how frequently `assigns` and `assert_template`.
> As you have a different goal, and `rails-controller-testing` is extracted and 
> pretty well maintained, I guess you have better investment for your time than 
> to rewrite specs that work.
>
>
> > version of RSpec that treats controller specs as request specs (does this 
> > even exist?)
> It doesn't to my best knowledge.
>
>
> > There are a couple questions that inform this answer, and perhaps deserve 
> > to be answered in their own right:
> >
> > 1) When all is said and done, what is the position of the RSpec team 
> > regarding controller specs vs. request specs?
> Controller specs are sometimes used as requests specs, and this lets you 
> easily shot you in your foot. I've just recently seen several `get` calls in 
> a single example, and memoization in the controller that remained between 
> those requests.
> Rails core team worked hard to make request specs fast. I don't see any 
> reason not to use them.
>
>
>
> > 2) Since it seems that, for at least awhile, RSpec and Rails were a bit at 
> > odds regarding the nature of these tests, what minor versions of RSpec 3 
> > align with (are intended to be used with) which versions of Rails 5?
>
> `rspec-rails` 4.x supports Rails 5 (and even 4.2).
> There was a more reliable table than that in `rspec-rails` source somewhere, 
> but just by checking README.md (http://README.md) of different maintenance 
> branches of `rspec-rails` 3.x
> `rspec-rails` 3.0-3.5 Rails 3&4
> `rspec-rails` 3.5-3.9 Rails 3&4&5
>
>
>
> For a start, there's an interesting discussion here 
> https://github.com/rspec/rspec-rails/issues/2373 and here 
> https://github.com/rubocop-hq/rspec-style-guide/issues/113

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rspec+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/dejalu-217-3700ca81-2903-4a43-aa70-87b831d42325%40jonrowe.co.uk.

Reply via email to