用黄瓜测试服务器ruby-application

时间:2012-05-03 20:17:34

标签: ruby cucumber bdd webrick

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

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

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

我想在env.rb中启动服务器并在env.rb中声明的at_exit块中销毁它。你觉得怎么样?

你知道这个问题的任何模式吗?

2 个答案:

答案 0 :(得分:1)

我为此使用Spork。它启动一个或多个服务器,并且能够在需要时重新加载这些服务器。这样,每次运行测试时,都不会产生启动Rails的开销。

https://github.com/sporkrb/spork

查看此RailsCast了解详情:http://railscasts.com/episodes/285-spork

答案 1 :(得分:1)

由于黄瓜不再支持spork(为什么?)我在env.rb中使用以下代码 要分叉一个进程,我使用这个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