2012-03-15 11 views
7

私のRails 3.2プロジェクトでは、Javascriptからhttp://jsonip.comに時々HTTPリクエストを送信します。しかし、@javascriptタグでCucumberを実行すると、リクエストが非常に頻繁に送信されます。これは明らかに非常に望ましくなく、私はそのような要求をスタブしたいと思います。今、私は、私はこのためにwebmockからstub_requestを使用すると考えていたので、のような:キュウリ/カピバラ/セレンのAjaxリクエストをスタブしていますか?

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

それでもこれに代わって、jsonipはJavaScriptから呼び出されます。そして、私はwebmockが実際にAjaxリクエストをスタブしていないことを発見しました(少なくとも上記のstub_requestステートメントではありません)。

Cucumber/Capybara/SeleniumセットアップでAjaxリクエストをスタブする正しい方法は何ですか?

答えて

3

唯一の方法は、アプリケーションが実行されている環境に応じてurlを変更したり、要求を無効にすることです。

このリクエストはブラウザによって行われたため、テスト側からこのリクエストをスタブすることはできません。

CIサーバーの一時的なソリューションまたはソリューションとして、hostsファイルでこのURLを無効にすることもできます。

+0

うーん、そう...私はそれを恐れていました。 Rails環境が開発環境の場合は0、テスト環境の場合は1、プロダクション環境の場合は2を保持するJavascript変数を生成するだけで動作します。変数が1の場合、外部サービスへのAjax呼び出しを防ぎます。最も美しい解決策ではありませんが、機能します。ありがとう、Iafonov。 –

3

この目的のために、吹き飛ばすビュリhttps://github.com/oesmith/puffing-billyを使用できます。私はそれを私のアプリでRecurlyにJSONP呼び出しを模擬するために使用しています。

+0

これは私にとって完璧に機能しました。ありがとうございました! – Franco

関連する問題