2011-08-14 16 views
5

me gustaría probar las respuestas JSON de una aplicación utilizando los carriles rspec en combinación con Faraday y faraday_middleware. Para usar faraday uno necesita la URL de la aplicación. En las pruebas, me gustaría usar localhost + un número de puerto.Carriles de utilización en un ensayo rspec

La pregunta es, ¿cómo puedo obtener o establecer el número de puerto de la instancia actual de la aplicación en un entorno de prueba rspec?

Hay preguntas similares pero no hay respuestas satisfactorias here y here.

¿Alguna idea?

+0

Estoy en la necesidad de la exacta la misma cosa. Espero que tengas una respuesta. – Tass

+0

Acabo de publicar una respuesta a una pregunta similar [aquí] (http://stackoverflow.com/a/17496025/535171). – JKubecki

Respuesta

2

que tenían la misma necesidad (+ Watir RSpec), pero el problema es: no hay una pila de rack funcionando de manera predeterminada durante las pruebas ...

me encontré con esta solución:

En spec_helper.rb:

HTTP_PORT = 4000 

test_instance_pid = fork do 
    exec 'unicorn_rails -E test -p %d' % HTTP_PORT 
end 

at_exit do 
    Process.kill "INT", test_instance_pid 
    Process.wait 
end 

que inician la pila de prueba una vez para todas las pruebas de especificaciones, y acabar con él al final. (En este ejemplo, estoy usando unicornio, pero podemos imaginar el uso de cualquier otro servidor)

En la especificación, que reutilizar el HTTP_PORT constante para construir URL:

browser.goto "http://localhost:#{HTTP_PORT}/" 
Cuestiones relacionadas