您可以推出自己的简单服务器。这是一个使用 thin 和 rspec 的快速示例(必须安装这些 gem,加上 rack):
# spec/support/test_server.rb
require 'rubygems'
require 'rack'
module MyApp
module Test
class Server
def call(env)
@root = File.expand_path(File.dirname(__FILE__))
path = Rack::Utils.unescape(env['PATH_INFO'])
path += 'index.html' if path == '/'
file = @root + "#{path}"
params = Rack::Utils.parse_nested_query(env['QUERY_STRING'])
if File.exists?(file)
[ 200, {"Content-Type" => "text/html"}, File.read(file) ]
else
[ 404, {'Content-Type' => 'text/plain'}, 'file not found' ]
end
end
end
end
end
然后在你的spec_helper
:
# Include all files under spec/support
Dir["./spec/support/**/*.rb"].each {|f| require f}
# Start a local rack server to serve up test pages.
@server_thread = Thread.new do
Rack::Handler::Thin.run MyApp::Test::Server.new, :Port => 9292
end
sleep(1) # wait a sec for the server to be booted
这将提供您存储在spec/support
目录中的任何文件。包括自己。对于所有其他请求,它将返回 404。
这基本上就是前面答案中提到的水豚所做的,减去了很多复杂性。