我用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
...
答案 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)