Problem with unexpected nil in assert_select

James Byrne
Thu, 09 Sep 2010 16:35:21 -0000

I am running cucumber features against a Rails 3 branch and I have this
step definition (which works fine in Rails-2.3.8):

When /should see (?:an|the) authentication request message/ do

  puts("This is the response: #{response.body}")

  selector = "#authentication_request"
  expected = true
  message = ''Missing authentication_request selector''

  assert_select(selector, expected, message)

end

Running the cucumber feature that invokes this step generates the
following error:

      undefined method `content_type'' for nil:NilClass (NoMethodError)
      /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/activesupport-3.0.0/
lib/active_support/whiny_nil.rb:48:in `method_missing''
      /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/actionpack-3.0.0/
lib/action_dispatch/testing/assertions/selector.rb:605:in
`response_from_page_or_rjs''
      /home/byrnejb/.rvm/gems/ruby-1.8.7-p302/gems/actionpack-3.0.0/
lib/action_dispatch/testing/assertions/selector.rb:213:in
`assert_select''
      /home/byrnejb/Software/Development/Projects/proforma.git/
features/app/models/users/step_definitions/
user_authentication_steps.rb:56

The response.body inside the step definition contains exactly what I
expect:


     To Proceed Please Authenticate Your Identity


What do I need to change to get this test to work in Rails-3.0.0?