Search code examples
ruby-on-railsruby-on-rails-3testunit

test_should_get_show(CartsControllerTest): ActionController::RoutingError: No route matches {:cart=>"1", :controller=>"carts", :action=>"show"}


The error I keep getting is as follows:

 test_should_get_show(CartsControllerTest):
    ActionController::RoutingError: No route matches {:cart=>"1", :controller=>"carts", :action=>"show"}

When I run the following code:

 def setup
    @cart = FactoryGirl.create(:cart)
  end

  test "should get show" do
    sign_in(FactoryGirl.create(:user, admin: true))
    session[:cart_id] = @cart.id 
    get :show, cart: @cart
    assert_response :success
    assert_not_nil assigns(:product_requests)
  end

My cart factory:

FactoryGirl.define do
  factory :cart do
    factory :cart_with_1_row do
      after(:create) do |cart|
        FactoryGirl.create(:cart_row, cart: cart)
      end
    end
  end
end

However, in my rake routes I have:

cart GET /carts/:id(.:format) carts#show

I can also go to http://localhost:3000/carts/1 manually in the browser in the development environment and it works fine.

What could be causing this?


Solution

  • Replace:

    get :show, cart: @cart
    

    With:

    get :show, id: @cart  # or @cart.id