2010-09-10 193 views
7

我正在考慮在heroku上運行我的rails應用程序時運行我的黃瓜測試。這是否是一種檢查開發環境與部署環境之間差異的有效方法?在heroku上運行黃瓜測試

有沒有人有這種情況的經驗?耙 - T告訴我「黃瓜耙任務不可用(黃瓜未安裝)」,即使我已經在我的.gems文件中指定黃瓜鐵軌。我是否從錯誤的角度來處理這個問題?

任何想法或建議嗎?

回答

0

cucumber寶石是否也在您的寶石清單中?

1

這將需要創建,修改和隨後刪除測試數據庫,並且由於Heroku忽略了database.yml文件,這根本不可能。

您可以嘗試通過在控制檯設置它運行在測試環境的應用程序,然後你可以運行測試

heroku config:add RACK_ENV=test 

但即使你得到這個工作,說再見你生產數據庫,因爲我非常確定Heroku會再次覆蓋database.yml並使用它自動分配給你的應用程序的數據庫。

您也可以考慮創建一個僅用於測試的second app on Heroku

3

您可以使用單獨的Heroku實例並將您的應用程序部署到那裏。然後你應該可以通過heroku rake運行你的測試。

您可以在heroku命令行中使用--app參數來選擇運行命令的實例。只是不要意外刪除你的prod數據庫。

0

由於在Heroku上直接運行測試似乎並不那麼簡單,我使用HTTParty調用而不是通常的Capybara調用來指導本地測試到Heroku應用程序。

這可以很好地工作,至少對於集成測試。

例如,這是針對本地應用程序運行常規本地測試,當我在步驟定義使用方法:

def my_http_request(httpmethod, path, body = '') 
    send httpmethod, path, body 
    end 

,這是靠在Heroku的應用程序正在運行的本地測試時我使用的方法:

def my_http_request(httpmethod, path, body = '') 
    options = body.blank? ? { :headers => {"Content-Length" => "0"} } : { :body => body } 
    @last_response = HTTParty.send httpmethod, 'https://lit-*****-6305.herokuapp.com' + path, options 
    end 

我加載一個或另一個入黃瓜世界,基於傳遞給黃瓜本身並設置相關的配置文件(這樣我可以簡單地調用cucumber -p heroku,當我想測試對Heroku的)特定的選項。

當然,在第二種情況下我也有照顧初始化每個方案之前,Heroku的數據庫,在「前」掛鉤,要求例如是這樣的:

def start_my_heroku_tests 
    @@db = PGconn.open(:host => 'ec2-54-**-****-44.compute-1.amazonaws.com', :port => 5432, :dbname => 'd4d********rmi4k', :user => 'llcm*******jcyh', :password => '7FN_************gcxq') 
    @@db.exec "TRUNCATE sources" 
    @@db.exec "TRUNCATE posts" 
    end