2017-02-27 119 views
0

我已經在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-testSinatra。只需發送一個URL而不是應用程序就會崩潰。那麼有沒有簡單的方法來完成這個?我想我可以寫在上面rack-test測試框架,但我不知道它是值得的,即使我做喜歡Ruby超過JavascriptSinatra超過Express

回答

0

我意識到,我應該能夠編寫一個機架的應用程序,轉發到我要對運行部署測試環境中的所有請求。所以我去了谷歌和發現的寶石,做到了這一點: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可能不是這樣一個代理的最好名稱,你可能不希望主機名被硬編碼,但我相信你可以找出如何在你的項目中做這個工作,如果你需要的話。

相關問題