Prueba de la aplicación ruby ​​del servidor con pepino

Mi aplicación Ruby ejecuta el servidor Webrick. Quiero probarlo con pepino y quiero asegurarme de que me dé la respuesta correcta.

¿Es normal ejecutar el servidor en un entorno de prueba para realizar pruebas? ¿En qué parte de mi código debo iniciar el proceso del servidor y dónde debo destruirlo?

Ahora inicio el servidor por paso de fondo y destruyo en After hook. Es lento porque el servidor se inicia antes de cada escenario y se destruye después.

Tengo la idea de iniciar el servidor en env.rb y destruirlo en el bloque at_exit declarado también en env.rb. ¿Qué piensa usted al respecto?

¿Conoces algún patrón para ese problema?

preguntado el 03 de mayo de 12 a las 21:05

2 Respuestas

Yo uso Spork para esto. Inicia uno o más servidores y tiene la capacidad de recargarlos cuando sea necesario. De esta manera, cada vez que ejecute sus pruebas, no incurrirá en los gastos generales de encender Rails.

https://github.com/sporkrb/spork

Echa un vistazo a este RailsCast para conocer los detalles: http://railscasts.com/episodes/285-spork

contestado el 03 de mayo de 12 a las 21:05

Dado que Cucumber ya no es compatible con spork (¿por qué?), Uso el siguiente código en env.rb. Para bifurcar un proceso, uso esta lib: https://github.com/jarib/childprocess

require 'childprocess'

ChildProcess.posix_spawn = true

    wkDir=File.dirname(__FILE__)

server_dir = File.join(wkDir, '../../site/dev/bin')
#Because I use rvm , I have to run the server thru a shell
@server = ChildProcess.build("sh","-c","ruby pageServer.rb -p 4563")
@server.cwd = server_dir
@server.io.inherit!
@server.leader = true
@server.start

at_exit do
puts "----------------at exit--------------"
puts  "Killing process " + @server.pid.to_s
 @server.stop
 if @server.alive?
     puts "Server is still alive - kill it manually"
 end
end

Respondido 25 Jul 14, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.