2011-12-16 12 views
5

Niektóre z moich testów Rspec stały się naprawdę duże (2000-5000 linii). Jestem tylko ciekaw, czy ktoś kiedykolwiek próbował łamanie tych testów w dół na kilka plików, które spełniają następujące warunki:Rozbicie testów RSpec

  • Jest systematyczny sposób nazywania i zawierania testu (na przykład metody A-L GOS do user_spec1.rb).
  • Możesz uruchomić pojedynczy plik, który faktycznie uruchomi inne testy w innych plikach.
  • Nadal można uruchomić określony kontekst w pliku
  • i dobrze mieć, RubyMine może uruchomić konkretny test (i wszystkie testy) dobrze.

Na razie udało się robi

#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

Czy bierzesz pod uwagę ich tagowanie zamiast? –

+0

Przepraszam, ale nie jestem całkiem pewien, co masz na myśli, oznaczając – denniss

+0

Możesz oznaczyć poszczególne specyfikacje i uruchomić je razem. –

Odpowiedz

6

Jeśli specyfikacje są coraz zbyt duże, to jest prawdopodobne, że model ten jest zbyt duży, a także - ponieważ użyłeś „UserSpec” tutaj, możesz powiedzieć, że twoja klasa użytkownika to "God class". Oznacza to, że robi zbyt wiele.

Więc podzielę to na znacznie mniejsze klasy, z których każda ma jedną odpowiedzialność. Następnie przetestuj te klasy w izolacji.

Może się okazać, że twoja klasa użytkownika wie, jak wykonać większość logiki w swoim systemie - jest to łatwa pułapka, ale można jej uniknąć, jeśli umieścisz swoją logikę w klasie, która zabiera użytkownika jako kłótnia ... Także jeśli wytrwale przestrzegasz prawa demeter (gdzie twoja klasa użytkownika może dotknąć tylko jednego poziomu poniżej, ale nie dwóch).

Dalsze Reading: http://blog.rubybestpractices.com/posts/gregory/055-issue-23-solid-design.html

Powiązane problemy