2011-12-16 17 views
5

Alcuni dei miei test Rspec sono diventati davvero grandi (2000-5000 righe). Mi chiedo solo se qualcuno ha mai provato rompere questi test verso il basso in più file che soddisfano le seguenti condizioni:Interruzione dei test RSpec

  • C'è un modo sistematico di denominazione e piazzare una prova (ad esempio, i metodi A-L GOS a user_spec1.rb).
  • È possibile eseguire un singolo file che eseguirà effettivamente gli altri test all'interno di altri file.
  • È ancora possibile eseguire un contesto specifico all'interno di un file
  • e, è bello averlo, RubyMine può eseguire un test specifico (e tutti i test) perfettamente funzionante.

Per ora, sono riusciti a fare

#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

Avete considerato loro codifica, invece? –

+0

Mi dispiace, ma non sono abbastanza sicuro di cosa intendi tagliando – denniss

+0

Puoi taggare le specifiche individuali ed eseguirle insieme. –

risposta

6

Se le specifiche sono sempre troppo grande, è probabile che il modello è troppo grande, come pure - in quanto si è utilizzato "UserSpec" qui, potresti dire che la tua classe utente è "God class". Cioè, fa troppo.

Quindi, vorrei suddividerlo in classi molto più piccole, ognuna delle quali ha una sola responsabilità. Quindi, prova queste classi in isolamento.

Quello che potresti trovare è che la tua classe utente sa come eseguire la maggior parte della logica nel tuo sistema - questa è una trappola facile da includere, ma può essere evitata se inserisci la tua logica in una classe che accetta un utente come un argomento ... Anche se segui con fermezza la legge di demeter (dove la tua classe utente potrebbe toccare solo 1 livello sotto di esso, ma non due).

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