Capybara click_link在问号后不带参数

时间:2014-06-08 12:36:29

标签: ruby-on-rails cucumber capybara

使用调试器点的Capybara标准步骤:

When /^(?:|I )follow "([^"]*)"$/ do |link|
  debugger
  click_link(link)
end

在调试器控制台中,我查看page.body并看到此链接:

<a href=\"/movies/find_all_by_director/George%20Lucas?movie_id=1\">Find Movies With Same Director</a>

但是Cucumber测试给了我一个错误:

When I follow "Find Movies With Same Director"
  No route matches [GET] "/movies/find_all_by_director/George%20Lucas" (ActionController::RoutingError)

我的movie_id参数在哪里?

更新:可能有错误。 config/routes.rb

Rottenpotatoes::Application.routes.draw do
  resources :movies
  get 'movies/find_all_by_director/:director?movie_id=:movie_id' => 'movies#find_all_by_director', :as => 'find_all_by_director'
end

1 个答案:

答案 0 :(得分:1)

当您在浏览器中单击此链接时,它是否也会出现路由错误?

我不认为与capybara有关(click_link肯定会尊重查询参数)。只是Rails回答说没有路由 - 查询参数通常不会影响路由,所以它们与路由无关。

另请参阅:http://guides.rubyonrails.org/routing.html#the-query-string但请注意,segment constraints可能会调整路由: