[rspec-users] RSpec 2.4, named/restful routes falling apart...

David Chelimsky dchelimsky at gmail.com
Thu Jan 13 08:01:34 EST 2011


On Jan 12, 2011, at 11:39 PM, Jason Nah wrote:

> Guys,
> 
> This could be me, but I thought I'd check
> 
> For some reason, when I spec controllers, I run into this problem (intermittently it would seem). Right now, I have a spec that fails predictably.
> 
> I'm using
> * Rspec 2.4.0
> * Rspec-rails 2.4.1
> * Rails 3
> * Mocha 0.9.10
> 
> I have the following defined in my routes file
> 
> resources :users
> 
> And a controller:
> 
> class UsersController < ApplicationController
>    before_filter :load_user
> 
>    def show
>       redirect_to(user_path(@user))
>    end
> 
>    private
>    def load_user
>       @user = User.find(params[:id])
>    end
> end
> 
> and a spec
> 
> describe UsersController do
>    before(:each) do
>       @user = Factory.build(:user, :id => '12341234')
>       User.expects(:find).returns(@user)
>       get "show", :id => @user.id
>    end
>    subject { response }
>    it { should redirect_to(user_path(@user)) }
> end
> 
> 
> The spec fails with the following
> 
> Failures:
> 
>   1) UsersController 
>      Failure/Error: get "show", :id => @user.id
>      ActionController::RoutingError:
>        No route matches {:controller=>"users", :action=>"show", :id=>#<User _id: 12341234, encrypted_password: "$2a$10$1gbrD8IZSo7LUYE5l5w1B.AYSu6zTs6lzWw.ZPhRKXCNT88xtjZfy", last_sign_in_ip: nil, confirmation_sent_at: nil, last_sign_in_at: nil, sign_in_count: 0, password_salt: "$2a$10$1gbrD8IZSo7LUYE5l5w1B.", setup_employer_profile: nil, last_name: "Treutel", current_sign_in_ip: nil, reset_password_token: nil, remember_token: nil, current_sign_in_at: nil, confirmation_token: "12341234XXX12341234", remember_created_at: nil, first_name: "Carolyn", confirmed_at: nil, email: "mrs.faye.anderson1 at zboncakkihn.ca">}
>      # ./app/controllers/users_controller.rb:17:in `show'
>      # ./spec/controllers/users_controller_spec.rb:50
> 
> 
> Could somebody explain what's going on????
> 
> It would appear that for some reason, my controllers don't know a thing about routing. Either that or something's wacky. The annoying thing about this is that it works perfectly fine when you use a browser to test.

What happens if you write the spec as a stock rails functional test?

$ rails generate test_unit:controller Users show

# in test/functionals/users_controller_test.rb
require "test_helper"
class UsersControllerTest < ActionController::TestCase
  test "show redirects to user path" do
    @user = Factory.build(:user, :id => '12341234')
    User.expects(:find).returns(@user)
    get "show", :id => @user.id
    assert_redirected_to user_path(@user)
  end
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110113/aead3845/attachment.html>


More information about the rspec-users mailing list