2012-06-22 9 views
5

Pracuję nad integracją aplikacji mojej szyny z Recurly.js.Jak wyśmiewać wywołanie JSONP w rspec zażądać spec z kapibara?

Zanim złożyłem prośbę o ponowne zgłoszenie się z mojej aplikacji po stronie serwera, mogłem przetworzyć całą moją integrację z doskonałym klejnotem VCR (https://github.com/myronmarston/vcr), ale Recurly.js wysyła żądanie bezpośrednio do usługi z kodu javascript za pomocą JSONP.

Pytanie brzmi: jak wyśmiewać te wywołania jsonp w teście integracji?

Obecnie używam rspec + kapibary + kierowca phantomjs (https://github.com/jonleighton/poltergeist)

Odpowiedz

3

Jedynym podejście wymyśliłem jest on-the-fly javascript łatanie. Jeśli chodzi o Poltergeist gem ma metodę do wykonywania prawa Javascript w przeglądarce testowym, można zastosować następującą poprawkę, aby włączyć Recurly.js w trybie testowym:

# 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); 
    } 
""") 

prostu zrobić Kapibara-makra, otrzymując wymyślną nazwę, taką jak "stub_recurly_js" i wywołuj ją za każdym razem przed wysłaniem formularzy Recurly.js.

Oto również link do oryginalnego postu, jeśli chcesz kopać głębiej: http://pieoneers.tumblr.com/post/32406386853/test-recurlyjs-in-ruby-using-rspec-capybara-phantomjs

+1

Lone linku [uznane za słabe odpowiedzi] (http://stackoverflow.com/faq#deletion), ponieważ nie ma znaczenia, a sam zasób docelowy nie gwarantuje się przy życiu przyszłość. [Byłoby lepiej] (http://meta.stackexchange.com/q/8259), aby uwzględnić istotne części odpowiedzi tutaj i podać link do odsyłacza. – j0k

2

Korzystając puffing-billy. Wprowadza serwer proxy między Twoją przeglądarką testową a światem zewnętrznym i pozwala na fałszywe odpowiedzi na konkretne adresy URL.

przykład:

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 
Powiązane problemy