2011-12-16 7 views
5

私のRspecテストのいくつかは、本当に本当に大きくなっています(2000〜5000行)。誰もが今までに以下の条件を満たしている複数のファイルにダウンこれらのテストを破るしようとした場合、私はちょうど疑問に思って:あなたのRSpecテストの中断

  • ネーミングおよびテスト(user_spec1.rbするなどの方法のA-LのGOS)を配置する体系的な方法があります。
  • 他のファイル内で他のテストを実際に実行する単一のファイルを実行できます。
  • ファイル内で特定のコンテキストを実行しても、
  • とすることができます。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

があなたの代わりにそれらをタグ付けと考えたことがありますか? –

+0

申し訳ありませんが、タグ付けの意味が分かりません – denniss

+0

個々の仕様にタグを付けて一緒に実行できます。 –

答えて

6

を行うことに成功している - あなたがここで「UserSpec」を使用するので、あなたのユーザークラスは "God class"と言えるでしょう。つまり、それはあまりにも多くなります。

私はこれをもっと小さなクラスに分割し、それぞれが1つの責任を負います。次に、これらのクラスを単独でテストします。

あなたのユーザクラスは、あなたのシステムでほとんどのロジックを実行する方法を知っていることがわかります。これは落ちやすいトラップですが、ロジックをクラスに入れておくと回避できます議論...あなたがデメテルの法則にしっかりと従っている場合(あなたのユーザークラスはそれ以下のレベルに1つしか触れることができませんが、2つではありません)。

参考資料:http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html

関連する問題