我维护了一些使用net/http
处理远程文件的Ruby gem。
我当前的单元测试设置包括使用setup
方法启动WEBrick服务器,然后在teardown
中将其终止。
def setup
return if @server_thread
@server_thread = Thread.new do
s = WEBrick::HTTPServer.new(:Port => 12000, :DocumentRoot => www_root, :Logger => Log.new(nil, BasicLog::ERROR), :AccessLog => [])
port = s.config[:Port]
begin
s.start
ensure
s.shutdown
end
end
end
使用Ruby 1.9.2和1.9.3我遇到了一堆连接错误 - Errno::ECONNREFUSED: Connection refused - connect(2)
。更令人沮丧的是,它们是短暂的 - 有时它们会发生,有时则不会发生。我所能想到的是,WEBrick要么被淹没,要么首先没有正确设置。
我需要能够通过HTTP加载多个静态文件(在我的fixtures目录中)来测试这些gem。在Test::Unit
测试中创建虚拟HTTP服务器的最佳实践是什么?