Ruby on rails &引用;没有路线maatches[GET]”;rails 3.2.12的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

集成测试所做的是打开一个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_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是一个自定义操作,用于分配一些值,没有表单。