2012-05-03 56 views
1

我的ruby应用程序运行Webrick服务器。我想用黄瓜来测试它,并且希望确保它给我正确的回应。用黄瓜测试服务器ruby-application

在测试环境中运行服务器在测试环境中正常吗?在我的代码中,我应该开始服务器进程,并在哪里销毁它?

现在我通过后台步骤启动服务器并在挂钩后将其销毁。这很慢,因为服务器在每个场景之前启动并在之后销毁。

我有想法在env.rb中启动服务器,并在env.rb中声明的at_exit块中销毁它。你怎么看待这件事?

您是否知道该问题的任何模式?

回答

1

由于黄瓜不支持任何叉勺更多(为什么?)我用下面的代码在env.rb 到餐桌的过程我用这个库: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