5

RailsアプリケーションとRecurly.jsの統合に取り組んでいます。

サーバー側のアプリケーションから繰り返しリクエストを行う前は、優れたVCR gem(https://github.com/myronmarston/vcr)との統合をすべてスタブ化できましたが、Recurly.jsはからサービスに直接リクエストを行います。 JSONPを使用したjavascriptコード。

問題は、統合テストでこれらのjsonp呼び出しをどのようにモックするかです。

現在、rspec + capybara + phantomjsドライバーを使用しています(https://github.com/jonleighton/poltergeist

4

2 に答える 2

3

私が思いついた唯一のアプローチは、オンザフライの JavaScript パッチです。Poltergeist gem にテスト ブラウザーで JavaScript を実行する方法がある限り、次のパッチを適用して Recurly.js をテスト モードにすることができます。

# The original 'save' function performs JSONP request to Recurly.
# A token is borrowed during the real API interaction.
page.driver.execute_script("""
  Recurly.Subscription.save = function (options) {
    Recurly.postResult('/subscription', { token: 'afc58c4895354255a422cc0405a045b0' }, options);
  }
""")

capybara-macros を作成し、'stub_recurly_js' のような派手な名前を付けて、Recurly.js フォームを送信する前に毎回呼び出すだけです。

もう少し深く掘り下げたい場合は、元の投稿へのリンクもあります。

于 2012-10-04T04:31:25.710 に答える
2

puffing-billyを使用します。テスト ブラウザと外界の間にプロキシ サーバーを挿入し、特定の URL に対する偽の応答を可能にします。

例:

describe 'my recurly jsonp spec' do

  before do
    # call proxy.stub to setup a fake response
    proxy.stub 'https://api.recurly.com/v2/foo', :jsonp => { :bar => 'baz' }
  end

  it 'does something with recurly' do
    ....
  end
end
于 2012-10-15T09:16:15.417 に答える