Заглушка Ajax просит в огурце / капибаре / селене? - PullRequest
8 голосов
/ 15 марта 2012

В моем проекте Rails 3.2 я отправляю случайный http-запрос на http://jsonip.com из Javascript.Но при запуске Cucumber с тегом @javascript запрос отправляется очень часто.Это, очевидно, очень нежелательно, и я хотел бы заглушить такие запросы.Теперь я подумал, что мог бы использовать для этого stub_request из webmock, например:

Before do
  stub_request(:any, /.*jsonip.*/).to_return(:body => '{"ip":"24.104.73.2","about":"/about"}')
end

, но даже при этом jsonip вызывается из Javascript.И поэтому я обнаружил, что webmock на самом деле не заглушает Ajax-запрос (по крайней мере, с помощью приведенного выше оператора stub_request).

Как правильно заблокировать Ajax-запрос в настройках Cucumber / Capybara / Selenium?

Ответы [ 3 ]

4 голосов
/ 09 июня 2013

Вы можете использовать Puffing-Billy https://github.com/oesmith/puffing-billy для этой цели.Я использую его, чтобы высмеивать вызовы JSONP для Recurly в моем приложении.

3 голосов
/ 18 июля 2014

Capybara не знает ни одного запроса, вставленного через webmock, так как запросы поступают от capybara-webkit или firefox.

Эта статья Thinkbot проведет вас через нее:
http://robots.thoughtbot.com/using-capybara-to-test-javascript-that-makes-http

3 голосов
/ 15 марта 2012

Единственный способ сделать это - изменить URL-адрес или отключить запрос в зависимости от среды запуска приложения.

Вы не можете заглушить этот запрос со стороны тестирования, потому что этот запрос сделан браузером , а не приложением.

Также как временное решение или решение для CI-сервера вы можете отключить этот URL в файле hosts.

...