Chcę ustawić active_record_spec_helper
dla moich testów Rails, tak aby móc przetestować moje modele bez konieczności konfigurowania całego środowiska Rails - zgodnie z ustaleniami Corey Haines w swoim excellent blog post on the subject.wymaga modelu ActiveRecord bez konieczności stosowania całego diagramu klas, dla active_record_spec_helper
(wiem, że obciążenia wstępnego jak wiosna lub Straży przejść część drogi w kierunku wyeliminowania tego problemu, ale zgadzam się z argumentem Coreya, że jest to „naprawdę tylko zespół pomocy na prawdziwy problem”).
więc mam skonfigurować niespełniającego pomocnika i innych plików, jak określono w Coreya blogu i - ale mój problem jest dokładnie tak, jak opisano to w my comment na tej samej GIST:
Zasadniczo, związki między moimi modelami oznaczać aby przetestować jeden model, muszę require
, tak wiele innych plików modeli, że neguje punktu korzystania z active_record_spec_helper
w pierwszej kolejności .
E.g. jeśli chcę przetestować comment.rb
, ale mój komentarz belongs_to :post
, to muszę wymagać post
, a także comment
, aby moje testy zadziałały. Ale wtedy Post
może mieć inne powiązania, np. belongs_to :user; has_many :drafts
, więc muszę wymagać user
i drafts
, a także po to, aby przetestować Comment
... następnie user
i drafts
mają również skojarzenia, i tak dalej, aż w końcu ładuję praktycznie każdy model na moim diagramie klasowym.
(Jeśli to nie ma sensu, dałem bardziej szczegółowe wyjaśnienie w the comment.)
Czy to możliwe, aby obejść ten problem i uniknąć konieczności require
te wszystkie obce pliki modelu? A może jest coś konceptualnego, którego mi brakuje - czy powinienem unikać łączenia wszystkich moich modeli w tej gigantycznej sieci, czy też jest to nieuniknione?
A może po prostu nie jest to warte wysiłku i czy powinienem się starać, aby całe środowisko było obciążone rails_helper
?
Jak włączyć automatyczne ładowanie bez ładowania całej aplikacji Rails? Czy jest gdzieś w ActiveSupport? – GMA
Mechanizm autoloadowy Ruby sam w sobie nie jest wystarczający i nie jestem pewien, czy/jak mechanizm Railsowy zbudowany na nim może być oddzielnie wywoływany. Prawdopodobnie nie powinienem być tak glib w opisywaniu tej opcji. Jeśli nie możesz znaleźć czegoś w klejnocie Railsów, który jest użyteczny, możesz przeczytać o możliwościach na stronie http://urbanautomaton.com/blog/2013/08/27/rails-autoloading-hell/, na przykład Skręć swój własny. –