В режиме разработки я могу указать браузеру http://arewesmallyet.dev/data и увидеть дамп json всех моих очищенных данных, что указывает на то, что сопоставление маршрутов и действие с данными в приложении выполняют свою работу.
В /features/step_definitions/landing_steps.rb у меня есть:
When /^I visit the (.*) page$/ do |webpage|
visit path_to(webpage)
end
В /features/support/url.rb у меня есть:
def path_to(webpage)
case webpage
when 'home'
'/'
when 'data'
'/data'
end
end
и rake routes
дает:
Application: Arewesmallyet
URL REQUEST PATH
(:index) GET /
(:data) GET /data(.:format)
Но когда я запускаю огурец, я получаю:
Scenario: data page # features/landing.feature:10
Given records exist in the database # features/step_definitions/landing_steps.rb:9
When I visit the data page # features/step_definitions/landing_steps.rb:1
File saved to ~/Developer/Ruby/arewesmallyet/capybara-timestamp.html.
Please install the launchy gem to open the file automatically.
Then I should be served the json data # features/step_definitions/landing_steps.rb:15
proper content missing (Minitest::Assertion)
features/landing.feature:13:in `Then I should be served the json data'
а capybara-timestamp.html имеет содержимое из '/'. Когда я добавляю puts path_to(webpage)
к шагу, я получаю правильные пути. Но current_url
дает '/'.
На самом деле, если я изменю шаг на:
When /^I visit the (.*) page$/ do |webpage|
puts path_to(webpage)
visit path_to(webpage)
puts 'first:'+current_path
end
(усеченный) вывод:
When I visit the data page # features/step_definitions/landing_steps.rb:1
/data
first:/
Как мне найти причину этой проблемы?
Что-то интересное я нашел во время отладки с byebug:
Capybara пытается посетить http://www.example.com, когда я говорю ему посетить '/data', '/data.json', '/data.js', '/' или любой другой путь. Поскольку все пути превращаются в http://www.example.com, компонент пути к URL-адресу отсутствует, поэтому мой приложение, очевидно, служит '/'. Я НЕ хочу получать доступ к удаленному URL-адресу, поэтому я использую пути '/' и '/data', а также драйвер :rack_test
; но на основе обсуждения на https://groups.google.com/forum/#!topic/ruby-capybara/HMKCIDJAA6w capybara просто полностью не работает?
Есть ли обходной путь или этот драгоценный камень просто бесполезен?
Я сообщил о проблеме на странице https://groups.google.com/forum/#!topic/ruby-capybara/SaB81spfil8, посмотрим, потрудятся ли они это исправить.