Ruby on rails &引用;没有路线maatches[GET]”;rails 3.2.12的rspec集成测试出错
集成测试所做的是打开一个show purchasing页面,并在purchasing页面上单击Approve(批准)。以下是rspec案例:Ruby on rails &引用;没有路线maatches[GET]”;rails 3.2.12的rspec集成测试出错,ruby-on-rails,ruby-on-rails-3,rspec,Ruby On Rails,Ruby On Rails 3,Rspec,集成测试所做的是打开一个show purchasing页面,并在purchasing页面上单击Approve(批准)。以下是rspec案例: it "should display the approve page" do proj = FactoryGirl.create(:project) pur = FactoryGirl.create(:purchasing, :project_id => proj.id) visit project_purcha
it "should display the approve page" do
proj = FactoryGirl.create(:project)
pur = FactoryGirl.create(:purchasing, :project_id => proj.id)
visit project_purchasing_path(proj, pur)
response.should have_selector("a", :href => approve_project_purchasing_path(proj, pur), :content => "Approve")
click_link 'Approve'
end
最后一行单击链接“批准”
会导致以下错误,即使响应仅验证页面上是否存在链接“批准”
:
ActionController::RoutingError:←[0m
←[31mNo route matches [GET] "/projects/1/purchasings/1/approve"
在rake routes
的输出中有一个路径approve\u project\u purchasing\u path:
approve_project_purchasing PUT /projects/:project_id/purchasings/:id/approve(.:format)
单击“批准”时,代码执行完全没有错误。
我们的rspec代码有什么问题?谢谢你的帮助
更新:
这是批准的链接,\u到:
<%= link_to 'Approve', approve_project_purchasing_path(@project, @purchasing), :method => :put, :id => 'purchasing_need_approve', :confirm => 'Approve' + @purchasing.prod_name + '?' %>
:put,:id=>'purchasing\u need\u approve',:confirm=>'approve'+@purchasing.prod\u name+'?'%>
您是否使用javascript提交表单?如果是这样,您将需要一个支持javascript的集成测试驱动程序来模拟它。测试正在生成GET,而您只定义了PUT。似乎是一个合理的问题。支持javascript的集成测试驱动程序是什么?Approve使用link_to with:确认哪个会弹出提示,询问您是否要批准。是你提到的javascript吗?让我稍微补充一下。你在用水豚吗?如果是这样,您将希望使用selenium或为JS的东西安装capybara_webkit(这就是我所说的启用JS的集成测试驱动程序)。我认为您需要以适当的形式执行此操作,或者使用按钮而不是链接,因为驱动程序忽略了您的:method=>:put stuff.group:development,:test do gem“rspec rails”、“>=2.0.0”gem“webrat”、“>=0.7.2”gem“factory\u girl\u rails”,“~>3.0”结束。这是gemfile。Approve是一个自定义操作,用于分配一些值,没有表单。