2012-07-26 48 views
3

我已經開始使用Rspec爲一個非常舊的項目編寫測試。我測試的模型都是ActiveRecords(後端是Oracle)。 我讀過一些博客,說我們應該使用嘲諷和樁/夾具/工廠女孩超過實際的SQL。 我很困惑。我將不得不存儲很多方法並創建大量對象。這是一個很好的做法嗎?在Rspec中使用數據庫查詢是否好?

回答

7

當您在測試的模型,這是很好的讓你的集成測試針對數據庫。也就是說,不要試圖模擬出ActiveRecord的東西,而只是使用模型對象。 FactoryGirl和Fabrication都是構建真實模型對象的簡便捷徑,它們是測試ActiveRecord模型的最佳實踐。

由於這是遺留代碼,我建議不是嘲笑或磕碰的舊代碼太多,因爲如果每個組件隔離測試隔離纔有效。

然而,編寫TDD的代碼時,嘲諷和磕碰有很多好處:

  • 爲您提供了細粒度測試(如果方法休息,你的測試告訴你是哪一個)
  • 你的測試運行得更快,因此您的TDD週期更短
  • 可以讓您斷言您的代碼如何與其他對象交互
  • 如果您必須過度殘留和模擬其他模型以隔離一個模型,通常這是一個好兆頭,代碼的耦合度太高,而且d eserves一個重構
+1

這正是我一直在尋找,謝謝你的建議! – 2012-07-31 04:21:37

1

通常你會使用存根,那麼你就可以運行,無負載測試AR,他們將運行速度快了很多。

我個人認爲,測試的假數據是沒有測試......也許在開發環境中進行TDD ......也許......,但對於測試環境應該儘量接近儘可能真實的東西。

當然,這是我的意見,不得被認爲是目前學校。

相關問題