2011-12-23 2 views
12

Я использую capybara, capybara-webkit, capybara-screenshot вместе с огурцом. (Ruby 1.9.3, Rails 3.1.3) и Capybara.javascript_driver = :webkit. Env.rbCapybara-webkit пытается открыть example.com

К сожалению, запуск спецификации огурца с @javascript никогда не удастся по какой-либо причине, а скриншоты с ошибкой просто возьмут example.com.

URL-адрес, который я фактически пытаюсь открыть, генерируется с результатом маршрутизатора rails для одной из моих моделей, например. с visit products_url

Так как я могу избежать этого, он заканчивает запрос example.com?

Любой вход очень приветствуется.


Просто потому, что комментарий перепутались - вот что я нашел решение:

Capybara.run_server = true 
Capybara.server_port = 7787 
Before '@javascript' do 
    Capybara.app_host = "http://127.0.0.1:#{Capybara.server_port}" 
end 

ответ

11

Попробуйте использовать visit products_path вместо этого. Они не рекомендуют использовать абсолютные URL-адреса в разделе «Gotchas» от README.

+0

Использование products_path заканчивается с ошибкой в ​​первую очередь: Не удалось загрузить URL: файл: /// продукты (Капибара :: Driver :: Webkit :: WebkitInvalidResponseError) Но однажды я также настроить app_host он начинает за работой. Так что моя текущая конфигурация: Capybara.run_server = истинный Capybara.server_port = 7787 Перед '@javascript' сделать Capybara.app_host = "http://127.0.0.1:#{Capybara.server_port}" конец Кроме того: http://www.emmanueloga.com/2011/07/26/taming-a-capybara.html seesm для решения некоторых других ошибок с capybara и rails 3.1 – pagid

+0

Кажется, что gotchas не относится к Webkit, когда об абсолютных URL-адресах –

1

Для меня было много тачек «gotcha» (и я использовал Capybara с Rspec). Первоначально в спецификации я имел:

visit "foos/5" 

Это работало отлично с Rack::Test, но когда я хотел, чтобы переключиться на драйвер webkit для тестирования JS взаимодействия, я получил это исключение (Невозможно загрузить URL: файл: /// продукты (Капибара :: Driver :: Webkit :: WebkitInvalidResponseError)).

То, что я должен был сделать изменения пути я прошел, чтобы посетить, например, так:

visit "/foos/5" 

SucceS !!

1

Вот еще одна потенциальная возможность, отправленная для других, которые могут иметь эту проблему. Я тестировал кеширование действий, а генерация ключей Rails выглядит как «views/www.example.com/products». Это происходит, даже если вы используете product_path как url. Это может привести к необходимости устанавливать имя вашего сервера, чтобы вы могли заранее знать, какой ключ кеша ожидать.