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