Marcelo de Moraes Serpa
2009-Jul-22 16:19 UTC
[rspec-users] Making sure a action exists (aka specing a controller action)
Hello list! In my efforts of following BDD in a disciplined manner, I found myself needing to spec a Rails action. The behavior I wanted to test was: "This controller should handle the index action", and since it is not good practice to go to the implementation before specing, I decided to spec the action too, so I could start defining it. I did: describe MyController do it "should handle get requests to the index action" do get :index response.should be_success end The problem is the assertion. Even if you don''t have the action, the http response will be 200 OK. I tried to check for the "Unknown Action" text (with the have_text matcher) but strangely enough, even if you don''t have the action defined in the controller, the response body is always empty (which doesn''t happen if you request from mongrel, which shows an "Unknown action" page. Any ideas on how I could assert that the index action exists and that it fails when it is not there? Maybe this test doesn''t make sense? Any suggestions welcome! Thanks, Marcelo.
David Chelimsky
2009-Jul-22 17:23 UTC
[rspec-users] Making sure a action exists (aka specing a controller action)
On Wed, Jul 22, 2009 at 11:19 AM, Marcelo de Moraes Serpa<celoserpa at gmail.com> wrote:> Hello list! > > In my efforts of following BDD in a disciplined manner, I found myself > needing to spec a Rails action. > > The behavior I wanted to test was: "This controller should handle the > index action", and since it is not good practice to go to the > implementation before specing, I decided to spec the action too, so I > could start defining it. I did: > > describe MyController do > > ?it "should handle get requests to the index action" do > ? get :index > ? response.should be_success > ?end > > The problem is the assertion. Even if you don''t have the action, the > http response will be 200 OK. I tried to check for the "Unknown > Action" text (with the have_text matcher) but strangely enough, even > if you don''t have the action defined in the controller, the response > body is always empty (which doesn''t happen if you request from > mongrel, which shows an "Unknown action" page. > > Any ideas on how I could assert that the index action exists and that > it fails when it is not there? Maybe this test doesn''t make sense? Any > suggestions welcome!So it looks like you''ve uncovered a rspec-rails bug. I''m not sure when it appeared because I''m pretty sure there was a time when this would work as you expect, but right now there are no specs for missing actions - only missing templates - so something in rspec-rails is consuming the fact that the action is missing. I added https://rspec.lighthouseapp.com/projects/5645-rspec/tickets/860 - please feel free to follow and/or add comments to that ticket. Cheers, David> > Thanks, > > Marcelo. > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >