Rake Routes显示:

 estimate_location GET      /estimate/location/:id(.:format)   estimate/location#show

我的rspec测试:
it 'should re-direct to location/new from show' do
  e = FactoryGirl.create :estimate
  get estimate_location_path e
  expect(response.status).to eq(302)
end

控制台说:
   Failure/Error: get estimate_location_path e
     ActionController::RoutingError:
       No route matches {:controller=>"estimate/location", :action=>"/estimate/location/1"}

这对我来说没有意义。有一条路径,我通过了一个对象(rails很聪明地从中获取id),但它说没有这样的路径??

最佳答案

看起来您正在编写一个控制器规范(rails调用函数测试)
在这些测试中,getpostetc方法期望第一个参数是操作的名称,第二个参数是选项的散列值-它们绕过路由(尽管它们确实检查操作是否可路由)。你反而会

get :show, id: e.id

另一方面,在集成测试(请求规范或特性规范)中,您将使用实际路径(根据设置,您将使用visitgetpost等,但它们是不同的get方法)

关于ruby-on-rails - 在rspec测试中找不到现有路由的路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28551578/

10-10 21:55