2011-12-16 104 views
5

我的一些Rspec測試變得非常大(2000-5000行)。我只是想知道是否有人曾經試圖打破這些測試分解成符合以下條件的多個文件:打破RSpec測試

  • 沒有命名,並把你的測試(例如方法A-L GOS到user_spec1.rb)的系統方法。
  • 您可以運行一個文件,該文件將實際運行其他文件中的其他測試。
  • 您仍然可以在文件
  • 中運行特定的上下文,RubyMine可以運行特定的測試(以及所有測試)。

現在,我已經成功地做

#user_spec.rb 
require 'spec_helper' 
require File.expand_path("../user_spec1.rb", __FILE__) 
include UserSpec 

#user_spec1.rb 
module UserSpec do 
    describe User do 
    .. 
    end 
end 
+0

您是否考慮過對它們進行標記? – 2011-12-16 22:50:06

回答

6

如果您的規格越來越太大,很可能是你的模型太大,以及 - 因爲你使用「UserSpec」在這裏,你可以說你的用戶類是「God class」。也就是說,它確實太多了。

所以,我會把它分成更小的班級,每個班級都有一個單一的責任。然後,單獨測試這些類。

您可能會發現,您的User類知道如何執行系統中的大部分邏輯 - 這是一個容易陷入的陷阱,但可以避免,如果將邏輯放在需要用戶的類中一個論點...另外,如果你堅定地遵循德米特定律(你的用戶類只能觸及1級以下,而不是2級)。

延伸閱讀:http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html