0

次の簡単なコードを使用して、rspec でアプリをテストしています。

require 'spec_helper'

    describe CarsController do
    describe "GET 'new'" do
            it "should be successful" do
            visit new_user_car_path(:user_id=>"28")
            response.should be_success
            end
        end
    end

実行すると、このメッセージが表示されました

Failure/Error: visit new_user_car_path(:user_id=>"28")
 ActiveRecord::RecordNotFound:
   Couldn't find User with id=28
 # ./app/controllers/cars_controller.rb:3:in `new'
 # ./spec/controllers/tanking_logs_controller_spec.rb:6:in `block (3 levels) in <top (required)>'

これで何が起こるかわかりません。ルートに new_user_car_path が表示されます。見てください...

user_cars GET    /users/:user_id/cars(.:format)                               cars#index
                      POST   /users/:user_id/cars(.:format)                               cars#create
         new_user_car GET    /users/:user_id/cars/new(.:format)                           cars#new
        edit_user_car GET    /users/:user_id/cars/:id/edit(.:format)                      cars#edit
             user_car GET    /users/:user_id/cars/:id(.:format)                           cars#show
                      PUT    /users/:user_id/cars/:id(.:format)                           cars#update
                      DELETE /users/:user_id/cars/:id(.:format)                           cars#destroy

必要に応じて、これは私のroutes.rbです

Estaciones::Application.routes.draw do
root :to => "static_pages#home"
match '/contact', :to=>'static_pages#contact'
match '/about', :to=>'static_pages#about'
devise_for :users
resources :gas_stations
   resources :users do
      resources :cars do
      #resources :tanking_logs
      end
   end
...
4

1 に答える 1

1
new_user_car GET    /users/:user_id/cars/new(.:format)

パスが機能するには:user_idパラメータが必要ですが、パラメータを提供していません。

編集あなたのコメントによると、Factory Girl Railsを使用している場合は、ユーザーを作成するためのファクトリを設定してから、次のようなことを行うことができます。

user = Factory.create :user
visit new_user_car_path(:id => user.id)

それ以外の場合は、手動で作成できます。

user = User.create!(:name => "Joe", ...)
visit new_user_car_path(:id => user.id)
于 2012-07-30T20:29:22.540 に答える