Ruby 我可以使用机架测试进行部署测试吗?

Ruby 我可以使用机架测试进行部署测试吗?,ruby,testing,sinatra,rack,rack-test,Ruby,Testing,Sinatra,Rack,Rack Test,我在Sinatra中构建了一个简单的api,目的是使用Docker建立一个部署管道。我正处于这样一个阶段,我可以很容易地将Sinatra转换为其他东西,目前我这样做有一个原因 我曾经使用Express编写了一个api,重用测试来测试部署是很简单的: # Testing the code chai.request(app) .get('/') # Testing a deployment chai.request('http://localhost:8080') .get('/') 例

我在
Sinatra
中构建了一个简单的api,目的是使用
Docker
建立一个部署管道。我正处于这样一个阶段,我可以很容易地将
Sinatra
转换为其他东西,目前我这样做有一个原因

我曾经使用
Express
编写了一个api,重用测试来测试部署是很简单的:

# Testing the code
chai.request(app)
  .get('/')

# Testing a deployment
chai.request('http://localhost:8080')
  .get('/')
例如:


现在我想知道我是否可以通过
机架测试
Sinatra
实现同样的功能。只需发送URL,而不是应用程序,就会崩溃。那么有没有一个简单的方法来实现这一点呢?我想我可以在
机架测试
的基础上编写一个测试框架,但我不确定它是否值得,尽管我确实更喜欢
Ruby
而不是
Javascript
Sinatra
而不是
Express
,但我意识到我应该能够编写一个框架应用程序,将所有请求转发到我想要运行部署测试的环境。所以我去谷歌找到了一块宝石,它就是这样做的:

下面介绍如何编写一个简单的机架应用程序,将请求重定向到服务器:

require 'rack/proxy'

class Foo < Rack::Proxy
  def rewrite_env(env)
    env["HTTP_HOST"] = "api.example.com"
    env
  end
end
需要“机架/代理”
类Foo
然后我对
Foo.new
进行了测试,结果成功了。我检查了该环境的日志,可以确认我的测试实际上是针对该环境运行的


Foo
可能不是此类代理的最佳名称,您可能不希望主机名硬编码,但我相信您可以在需要时找到如何在项目中实现这一点。

我意识到我应该能够编写一个机架应用程序,将所有请求转发到我想要运行部署测试的环境。所以我去谷歌找到了一块宝石,它就是这样做的:

下面介绍如何编写一个简单的机架应用程序,将请求重定向到服务器:

require 'rack/proxy'

class Foo < Rack::Proxy
  def rewrite_env(env)
    env["HTTP_HOST"] = "api.example.com"
    env
  end
end
需要“机架/代理”
类Foo
然后我对
Foo.new
进行了测试,结果成功了。我检查了该环境的日志,可以确认我的测试实际上是针对该环境运行的

Foo
可能不是此类代理的最佳名称,您可能不希望主机名硬编码,但如果需要,我相信您可以找到如何在项目中实现这一点