我的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