2013-07-26 67 views
0

這裏有很多提示,除了範圍和集成測試之外,避免在Rails測試中擊中數據庫是一種最佳做法。有什麼辦法阻止規格製作數據庫查詢?類似於數據庫的webmock ...如何在rails測試中阻止數據庫

+0

你也許應該測試反對集成測試中的實際數據庫。您可以使用嵌入式數據庫,也可以使用事務並將其回滾,以便實際不保存到數據庫。 –

+0

是的,我在我的問題中提到過。集成測試應該會觸及數據庫,但在其他更多單元測試中,我希望能夠阻止它。 – lobati

回答

0

如果您使用的工廠創業寶例如Factory_GirlFabrication您可以選擇使用未保存到數據庫的資源實例。例如,在工廠女孩,你可以做到以下幾點:

# Returns a User instance that's not saved 
user = FactoryGirl.build(:user) 

# Returns a saved User instance 
user = FactoryGirl.create(:user) 

對於軌道上測試的詳細信息請查看:

+0

是的,我使用的是工廠女孩,儘可能使用'build'或'build_stubbed',但仍然有些地方我的代碼可能會嘗試保存到數據庫中,所以我希望能夠完全阻止它。 – lobati

+0

我認爲完全阻止它的唯一方法是在您的測試數據庫上使用數據庫用戶而無需寫入權限。但是,這會破壞您的集成測試。我不認爲目前有什麼辦法可以做你正在問的東西,但是如果有的話我會很高興知道如何。 – colsen