I just updated the Greenvoice codebase to use Rails 2.3.2 and RSpec 1.2.0, and got a flurry of failing examples from our routing specs. It turns out the routes_for helper in RSpec 1.2.0 is a bit stricter when it comes to request methods and parameters.

For example, here's an example that worked pre-1.2.0:

route_for(:controller => 'friends',
          :action => 'request_friend',
          :user_id => 1).should ==
'/users/1/friends/request_friend'

This fails under 1.2.0, for two reasons. First, if your route doesn't accept GET requests, you need to specify the method like this:

route_for(:controller => 'friends',
          :action => 'request_friend',
          :user_id => 1).should ==
{
  :path => '/users/1/friends/request_friend',
  :method => :delete
}

Second, it's stricter about all parameters being strings; in this example, the user_id parameter was specified as a number, and it wasn't matching. This is the final, passing example:

route_for(:controller => 'friends',
          :action => 'request_friend',
          :user_id => '1').should ==
{
  :path => '/users/1/friends/request_friend',
  :method => :delete
}

Update: Of course, if I'd bothered to look, this is all pointed out in the 'Upgrade' document that comes with RSpec 1.2.0.