ActiveRecord的:: RecordNotFound:

时间:2012-07-30 20:12:33

标签: ruby-on-rails testing rspec record

我用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
...

1 个答案:

答案 0 :(得分: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)