2012-06-22 11 views
5

Estoy trabajando en la integración de mi aplicación de rieles con Recurly.js.¿Cómo burlarse de la llamada JSONP en la especificación de solicitud de rspec con capibara?

Antes de realizar solicitudes recurrentes desde mi aplicación del lado del servidor, pude completar toda mi integración con una excelente joya VCR (https://github.com/myronmarston/vcr) pero Recurly.js solicita directamente al servicio desde el código javascript utilizando JSONP.

La pregunta es: ¿cómo burlarse de estas llamadas jsonp en la prueba de integración?

Actualmente estoy usando rspec + + controlador capibara PhantomJS (https://github.com/jonleighton/poltergeist)

Respuesta

3

El único enfoque que se me ocurrió es sobre la marcha Javascript parches. En cuanto a la joya Poltergeist tiene un método para ejecutar javascript justo en el navegador de pruebas, se puede aplicar el siguiente parche para convertir Recurly.js en el modo de prueba:

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

Simplemente haga una capibara-macros, dar una nombre sofisticado como 'stub_recurly_js' e invocarlo cada vez antes de enviar los formularios Recurly.js.

Aquí es también un enlace al mensaje original si desea profundizar un poco más: http://pieoneers.tumblr.com/post/32406386853/test-recurlyjs-in-ruby-using-rspec-capybara-phantomjs

+1

enlace Lone está [considera una respuesta pobre] (http://stackoverflow.com/faq#deletion) ya que no tiene sentido por sí mismo y recurso de destino no está garantizada para estar vivo en el futuro. [Sería preferible] (http://meta.stackexchange.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. – j0k

2

Uso puffing-billy. Inyecta un servidor proxy entre su navegador de prueba y el mundo exterior, y le permite falsificar respuestas para URL específicas.

Ejemplo:

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 
Cuestiones relacionadas