2012-06-22 7 views
5

Sto lavorando all'integrazione dell'applicazione Rails con Recurly.js.Come simulare la chiamata JSONP nelle specifiche di richiesta rspec con capybara?

Prima di effettuare richieste di ricodifica dalla mia applicazione lato server, quindi sono stato in grado di interrompere tutta l'integrazione con un eccellente VCR gemma (https://github.com/myronmarston/vcr) ma Recurly.js effettua direttamente la richiesta al servizio dal codice javascript utilizzando JSONP.

La domanda è: come prendere in giro queste chiamate jsonp nel test di integrazione?

Attualmente sto usando rspec + capibara + autista phantomjs (https://github.com/jonleighton/poltergeist)

risposta

3

L'unico approccio che mi è venuta è on-the-fly javascript patch. Per quanto riguarda la gemma Poltergeist ha un metodo per eseguire javascript nel browser di test, è possibile applicare la seguente patch per trasformare Recurly.js in modalità di test:

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

solo fare un Capybara-macro, dare un un nome di fantasia come "stub_recurly_js" e invoca ogni volta prima di inviare i moduli Recurly.js.

Ecco anche un link al post originale, se si vuole scavare un po 'più profondo: http://pieoneers.tumblr.com/post/32406386853/test-recurlyjs-in-ruby-using-rspec-capybara-phantomjs

+1

collegamento Lone è [considerata una risposta poveri] (http://stackoverflow.com/faq#deletion) dal momento che non ha senso di per sé e risorsa di destinazione non è garantito di essere vivo in il futuro. [Sarebbe preferibile] (http://meta.stackexchange.com/q/8259) includere qui le parti essenziali della risposta e fornire il link per riferimento. – j0k

2

Usa puffing-billy. Inietta un server proxy tra il browser di test e il mondo esterno e ti consente di simulare risposte per URL specifici.

Esempio:

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 
Problemi correlati