[英]Can I use rack-test for deployment tests?
我已經在Sinatra
構建了一個簡單的api,目的是使用Docker
設置部署管道。 我處於一個可以輕松地將Sinatra
其他東西的階段,目前有一個原因可以這么做。
我曾經使用Express
寫過一個api,重用測試來測試部署很簡單:
# Testing the code
chai.request(app)
.get('/')
# Testing a deployment
chai.request('http://localhost:8080')
.get('/')
來自以下示例的示例: https : //github.com/chaijs/chai-http#integration-testing
現在,我想知道是否可以通過rack-test
和Sinatra
完成相同的任務。 只是發送一個URL(而不是應用程序)會崩潰。 那么有沒有簡單的方法可以做到這一點? 我想我可以在rack-test
之上編寫一個測試框架,但是我不確定它是否值得,即使我比Javascript
更喜歡Ruby
和Express
而不是Sinatra
。
我意識到我應該能夠編寫一個機架應用程序,將所有請求轉發到我要針對其運行部署測試的環境。 因此,我去了Google,發現了一個可以做到這一點的寶石: rack-proxy
這是編寫簡單的機架應用程序的方法,該應用程序將請求重定向到您的服務器:
require 'rack/proxy'
class Foo < Rack::Proxy
def rewrite_env(env)
env["HTTP_HOST"] = "api.example.com"
env
end
end
然后我對Foo.new
進行了測試。新測試成功了。 我檢查了該環境的日志,並且可以確認我的測試實際上是針對該環境運行的。
Foo
可能不是這種代理的最佳名稱,並且您可能不希望對主機名進行硬編碼,但是我敢肯定,如果需要的話,您可以弄清楚如何在您的項目中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.