Desidero impostare un active_record_spec_helper
per i miei test Rails in modo che possa testare i miei modelli senza dover impostare l'intero ambiente Rails, come stabilito da Corey Haines nel suo excellent blog post on the subject.che richiede un modello ActiveRecord senza dover richiedere l'intero diagramma di classe, per active_record_spec_helper
(so che preloaders come Spring o Guardia andare una parte del cammino verso la risoluzione di questo problema, ma sono d'accordo con la tesi di Corey che questo è "in realtà solo un cerotto sopra il vero problema".)
così ho creato il mio aiuto specifiche e altri file come stabilito nel post sul blog di Corey e - ma il mio problema è esattamente come lo descrivo nel my comment su quello stesso succo:
in sostanza, le associazioni tra i miei modelli significano per testare un singolo modello, devo fare require
così tanti altri file modello che nega il punto di utilizzo di active_record_spec_helper
in primo luogo .
E.g. se voglio testare comment.rb
ma il mio commento belongs_to :post
, allora devo richiedere post
e comment
per far funzionare i miei test. Ma allora lo Post
potrebbe avere altre associazioni, ad es. belongs_to :user; has_many :drafts
, quindi devo richiedere user
e drafts
e solo per testare Comment
... quindi user
e drafts
hanno associazioni anche, e così via fino a quando non finisco di caricare praticamente ogni modello nel mio diagramma di classe.
(Se questo non ha senso, ho dato una spiegazione più dettagliata in the comment.)
E 'possibile ovviare a questo ed evitare di dover require
tutti quei file modello estranei? O c'è qualcosa di concettuale che mi manca - dovrei evitare di collegare tutti i miei modelli in questo gigantesco web, o è inevitabile?
Oppure non vale la pena e dovrei limitarmi a lasciare che rails_helper
carichi l'intero ambiente?
Come posso attivare l'autoloading senza caricare l'intera app Rails? È da qualche parte in ActiveSupport? – GMA
Il meccanismo di caricamento automatico di Ruby non è sufficiente da solo e non sono sicuro se/come il meccanismo di Rails costruito su di esso possa essere chiamato separatamente. Probabilmente non avrei dovuto essere così disinvolto nel descrivere questa opzione. Se non riesci a trovare qualcosa in una gemma Rails utilizzabile così com'è, puoi leggere le informazioni su http://urbanautomaton.com/blog/2013/08/27/rails-autoloading-hell/, ad esempio e forse tira il tuo. –