There is none.
It has been replaced by integration testing.
Okay, I can see the point. You want to test if a request gives the right response. If the user has to log in first, you do the request first, then do the one you want to test. However...
Updating tests
I have over 800 functional tests in my project. If I do a full upgrade to Rails 5, then I have a huge amount of work modifying each and every test.And I do mean every test, as the way we make requests has changed fundamentally, so:
get :new
... has become:
get root_path
The parameters are different too, so a simple find/replace is not going to work here.
At the moment, that is not necessary, but functional tests are to be deprecated, so it is either update all 800 or so tests or add another gem to the project.
No assigns
Integration testing is "black box", it gives no way to look inside to see what variables are getting set. This seems like a really bad idea in practice.How can it possibly be a good thing to stop checking something? Because that is what I will have to do. A fair proportion of those 800 tests check the value of a variable or three. If they stop doing that, then I cannot be as confident that passing the test means the code is actually okay.
Another big problem is that I use
assigns
as a way to see what is going on when a test fails. With integration testing, I will know it fails, but have no idea why. Again, it feels like Rails is deliberately withholding useful information, just because it is philosophically better to do it this way.