2011-11-01 52 views
0

我想寫幾個單元測試,不對數據庫做任何更改。Rails的單元測試沒有數據庫設置或拆卸?

我有一個Rails 2.3.11應用程序。這個應用程序有一個SQLite數據庫作爲其主數據庫。在很多方面,這是一個普通的Rails應用程序。

這個應用程序的獨特之處在於它還建立了與SQL Server數據庫的連接。我有一些模型是抽象類,他們使用SQL Server數據庫。我有before_savebefore_destroy回調,以防止對SQL Server數據庫進行任何更改。此外,連接到SQL Server的用戶憑據應該是隻讀的。

我想編寫單元測試,對SQL Server數據庫中已經存在的數據進行斷言。但我不想設置或拆卸SQL Server數據庫。

我很害怕看到會發生什麼。我想在單元測試中設置一個設置,以防止Rails嘗試設置或拆卸SQL Server數據庫。這可能嗎?我該怎麼做?

謝謝!

+0

順便說一下,我想在測試環境中使用與開發環境中相同的SQL Server數據庫連接。 – Teddy

回答

1

安裝/拆卸隻影響應用程序數據庫(SQLite,聽起來像),而不是額外的外部數據庫連接。

此外,您應該保持測試環境與生產環境完全分離。因此,如果您使用的是測試SQLServer數據庫(並且您應該使用測試數據 - 而不是生產數據),那麼即使發生最糟糕的情況,您也應該可以。

+0

所以我沒有什麼可擔心的,對嗎?有2個SQL Server數據庫實例:生產和開發。沒有用於測試的第三個SQL Server數據庫實例。我想在測試環境中使用開發SQL Server數據庫。 – Teddy

+0

如果該SQLServer數據庫完全在您的應用程序之外,那麼您應該沒問題。如果您擔心這一點(或者您的問題中可能存在某些重要問題),則應該創建一個不會受到傷害的測試數據庫。例如,我們的許多生產應用程序使用自己的應用程序PostgreSQL DB,但也依賴於處理用戶身份驗證的Oracle DB,這在技術上不屬於Rails應用程序。我們沒有使用我們的測試/開發環境接觸生產Oracle數據庫,而是運行了Oracle數據庫的測試版本,因此我們不會因意外而中斷生產。 – jefflunt

+0

感謝您的意見。我會看看服務器團隊是否會爲測試套件創建另一個SQL Server數據庫實例。 – Teddy