2012-11-02 78 views
0

當開發與傳統的模式是在使用按現有應用程序,如果表在整個架構有外國ID列NOT NULL約束,以一個Rails應用程序爲測試創建/保存模型,爲這些關聯以及它們的關聯等存在模型。因此,這不是一件容易的事情,因爲您只需要創建一個模型,然後根據需要進行測試。戰略Rails開發/測試開發複雜的傳統模式

至於測試進行,這似乎是,如果你使用的是FactoryGirl並希望創建和保存模型實例,從控制器返回等,當所有的關聯依賴的參與是一個問題。另一種選擇是模擬,但嘲弄可能會更費時,並且不允許您輕鬆進行集成測試。另一種是使用夾具,但這些都是耗時和脆弱的。另一種是預填充生產數據的測試數據庫,但這並不解決工廠的需要,etc./known數據以測試期望,和Rails通常預計剛開始用乾淨的DB測試環境。

當您有一個現有的複雜模式時,您使用何種策略來開發模型,測試等,這些模式是將一個Rails應用程序連接到 - 不僅用於讀取數據,還寫入正在使用的現有模式由現有的生產應用程序? (即「重建船在海上」的問題)

回答

1

當我們第一次開始了在這個問題上,我一直在尋找的東西,可以從現有模式自動生成的模型。我發現了Nic博士的魔法模型生成器,但它只是說在Rails 2.x中工作。我運行了一個Rails 2.x環境(忘記了它工作的特定版本),但它似乎沒有什麼幫助,所以我編寫了一個腳本來生成我們的模型。然而,當我們開始發展我們再有型號的負載,所以我們就開始嘗試走出我們並不需要的操作,然後需要註釋掉的關聯,應該不再有款,但其中一些被要求/ NOT NULL外鍵,所以我們現在不得不將它們移回來,並取消那些比我們想象的更多的註釋。

我們沒寫,並發現一些事情的過程中是有幫助的,但並不是所有這些我們已經使用,但它們可能會有所幫助別人:

至於測試數據的設置,我開始寫一個工具來自動FactoryGirl工廠開發了名爲Stepford並寫Modelist來幫助我們的測試模型,解決循環依賴,以及識別模型依賴關係,因此我們不必包含所有自動生成的模型。

到目前爲止真的,我想出了和聽到其他唯一的答案說也就是重建現有的應用程序,甚至是零散的,不同的技術難度大,速度慢,而且容易出錯。