使用调试器点的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
答案 0 :(得分:1)
当您在浏览器中单击此链接时,它是否也会出现路由错误?
我不认为与capybara有关(click_link肯定会尊重查询参数)。只是Rails回答说没有路由 - 查询参数通常不会影响路由,所以它们与路由无关。
另请参阅:http://guides.rubyonrails.org/routing.html#the-query-string但请注意,segment constraints可能会调整路由: