我的ruby应用程序运行Webrick服务器。我想用黄瓜来测试它,并且希望确保它给我正确的回应。用黄瓜测试服务器ruby-application
在测试环境中运行服务器在测试环境中正常吗?在我的代码中,我应该开始服务器进程,并在哪里销毁它?
现在我通过后台步骤启动服务器并在挂钩后将其销毁。这很慢,因为服务器在每个场景之前启动并在之后销毁。
我有想法在env.rb中启动服务器,并在env.rb中声明的at_exit块中销毁它。你怎么看待这件事?
您是否知道该问题的任何模式?
我的ruby应用程序运行Webrick服务器。我想用黄瓜来测试它,并且希望确保它给我正确的回应。用黄瓜测试服务器ruby-application
在测试环境中运行服务器在测试环境中正常吗?在我的代码中,我应该开始服务器进程,并在哪里销毁它?
现在我通过后台步骤启动服务器并在挂钩后将其销毁。这很慢,因为服务器在每个场景之前启动并在之后销毁。
我有想法在env.rb中启动服务器,并在env.rb中声明的at_exit块中销毁它。你怎么看待这件事?
您是否知道该问题的任何模式?
我使用Spork为此。它启动一台或多台服务器,并且有能力在需要时重新加载这些服务器。这样,每次运行测试时,都不会招致Rails的开销。
https://github.com/sporkrb/spork
看看这个RailsCast的细节:http://railscasts.com/episodes/285-spork
由于黄瓜不支持任何叉勺更多(为什么?)我用下面的代码在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