用黄瓜测试服务器红宝石应用程序



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

在测试环境中运行服务器进行测试是否正常?在我的代码中,我应该在哪里启动服务器进程,在哪里销毁它?

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

我有想法在 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

最新更新