我正在使用rspec测试我的应用程序,我读到我必须在测试环境中创建一个用户但不知道如何....这里是代码:
require 'spec_helper'
describe CarsController do
describe "GET 'new'" do
it "should be successful" do
visit new_user_car_path(:user_id=>"28")#also try (current_user) but nothing
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)>'
如果您需要更多代码,请告诉我
EDIT。我试过这个
require 'spec_helper'
describe CarsController do
describe "GET 'new'" do
it "should be successful" do
#user = User.create(...)
@user = {:email => "user@example.com", :password => "foobar", :password_confirmation => "foobar" }
visit new_user_car_path(@user)
response.should be_success
end
end
end
我现在收到了这个错误:
No route matches {:action=>"new", :controller=>"cars", :email=>"user@example.com", :password=>"foobar", :password_confirmation=>"foobar"}
答案 0 :(得分:3)
您的测试数据库中没有ID为28的用户。您需要为测试数据库设定种子并使用您知道存在的用户的ID。
或者,按需创建新用户:
describe "GET 'new'" do
it "should be successful" do
user = User.create(...)
visit new_user_car_path(user)#also try (current_user) but nothing
response.should be_success
end
end
答案 1 :(得分:1)
这可能会让您启动并运行,但这绝不是运行测试的好方法。
因此,如果您的开发数据库中有一个id = 28的用户,您可以告诉Rspec对此数据库而不是默认测试数据库运行测试。
在spec_helper.rb中 替换此
ENV["RAILS_ENV"] ||= 'test'
使用
ENV["RAILS_ENV"] ||= 'development'
答案 2 :(得分:0)
现在您的规范已更改,您收到路由错误。
正在发生的事情是,rails正在尝试在汽车中创建新车#new(这意味着cars_controller
和new
行动,但您没有这条路线。
运行rake routes
以查看您拥有的路线并发布。