2016-05-17 40 views
0

我正在幫助將Rails 2應用程序遷移到Rails 4,並且已經進入項目結束階段。 Rails 2應用程序沒有測試。在兩個不同的Rails應用程序上運行控制器測試

顯然我們需要測試以確保Rails 4應用程序能夠正常工作,但我們不想用Rails 2語法編寫測試,然後經歷將測試遷移到Rails 4的痛苦。我們目前使用RSpec在其他項目上。

我想將它們寫入Rails 4中作爲功能測試,並使用Capybara.app_host將請求重新路由到正在運行的Rails 2應用程序實例。問題是,該應用程序是一個API,並且Capybara不適用於測試API。

是否有任何方法將RSpec控制器測試路由到另一個服務器實例?

+0

我不這麼認爲(但其他人可能會聽到)。不過,我認爲你應該爲Rails 4編寫測試並完成它。如果新應用程序的行爲完全符合您的需要,那麼爲什麼舊應用程序的功能至關重要? – RichardAE

+0

在移植到新版本之前,在舊版本上編寫測試的一個原因是對舊版本的需求不太瞭解,並且在測試舊版本時會被發現。 (對於實際問題我也沒有很好的答案。) –

+0

非常感謝您的意見,並且很抱歉沒有及時看到他們。我們已經接受了這個項目,我想我們有一個解決方案。我會盡快發佈答案。 – danielmbarlow

回答

0

再次感謝您的評論。

我想我們有一個計劃。我們試圖在我們的舊項目上運行黃瓜和黃瓜api步驟,但是我們意識到要讓老的寶石版本很好地協同工作將會很困難。

我現在正在嘗試的解決方案是使用RSpec 1.3並創建一個spec/requests文件夾併爲其添加控制器測試。

我從http://matthewlehner.net/rails-api-testing-guidelines/的帖子中得到了這個想法 - 感謝馬修。在RSpec 2之前,我沒有在文檔中看到請求規格,所以我們使用integrate_views使我們的控制器測試非常接近集成測試,然後檢查控制器返回的主體內容。

至於語法,也許我們可以包括expect(..)幫手返回從#to方法在軌道2項目需要#should的對象,當我們口鋼軌4項目中刪除它。

相關問題