Testowanie enginów zdefiniowanych w środku projektu ich używającego

Witam.
Moja nieciekawa sytuacja wygląda tak:
Istnieje sobie projek, który zakłada w zależności od klienta , używanie różnych componentów/enginów czy jak tam kto ma ochotę nazwać.
Fajno by bylo gdyby enginy te byly otestowane( nawet jeżeli późno, to lepiej teraz niż wcale). Posługując się więc tym co znalazłem , postarałem się skonfigurować TestUnita w miarę moich skromnych możliwości ( doświadczanie mam znikome w kwesti TestUnita ponieważ zakochałem się w rspecu od pierwszego wejrzenia). Ale tutoriali na temat testowania enginów w test unicie nie brakuje, także teoretycznie poszło mi to szybko.
Do momentu kiedy to się nie okazało że w momencie w którym z jednego z enginów odpalam sobię test :

[code]require ‘test_helper’

class SlotTest < ActiveSupport::TestCase
test “if i can create a slot” do
a = Slot.new(“res”, “mynunit”, “another”, “another” )
puts a.inspect
assert a.valid?, false
end
end[/code]
Tak wygląda mój test_helper

[code]ENV[“RAILS_ENV”] = “test”

require File.expand_path("…/dummy/config/environment.rb", FILE)
require “rails/test_help”

Rails.backtrace_cleaner.remove_silencers!

Load support files

Dir["#{File.dirname(FILE)}/support/**/*.rb"].each { |f|[/code]
po odpaleniu mojego testu otrzymuje taki komunikat:

NameError: uninitialized constant SlotTest::Slot

Doszedłem do tego , ze Rails.root zwraca mi scieżkę do dummy aplikacji. Więc w test_helperze zrequirowałem wszystkie modele z mojego enginu w zasadzie, wiedząc , że za chwile dostane kolejny error i skończą mi się “genialne i schludne” pomysły.

W oczekiwaniu na ten moment pojawia się pytanie: czy ktoś podpowie mi jakieś lepsze/schludniejsze rozwiązanie?
A może jedynym rozwiązaniem jest wyjęcie tych enginów poza projekt i testowanie ich jako oddzielne projekty?
bo na chwile obecną struktura katalogów wygląda tak że w katalogu projektu mam coś w stylu
–app
–moje_enginy
----przykladowyengin
------test
--------dummy
--------mojetesty
–config
–etcetc

Adamie,
popchnij na Githuba gdzieś to rzucę okiem w międzyczasie. Ciężko mi zrozumieć Twój tok myślenia z tej wypowiedzi, na pewno jednak nie powinieneś robić require dla modeli z aplikacji czy Twojego silnika.

To akurat nie mój projekt, także nie bardzo mogę tak kodem sobie rzucać na prawo i lewo. Tok myślenia jest taki , że chce otestować te silniki , z tymze one nie są oddzielnymi appkami tak jak normalnie napisany engine, a znajdują się wewnątrz większego projektu - tak jak to opisałem w strukturze.

Zmień ścieżkę do dummy tak, żeby wskazywała na ten projekt. Dummy jest dobre jak masz jakiś engine, który ma pasować do dowolnej aplikacji railsowej, jeżeli to zawsze będzie część tej aplikacji, to nie ma sensu testować tego na dummy.

Tak jak napisał drogus, jeśli załadujesz główną aplikację zamiast dummy (którą możesz wyrzucić), to będziesz miał dostęp do wszystkich klas, czego właśnie chyba potrzebujesz.

Przykładowe pliki rspeca (w test unicie będzie analogicznie) silnika i głównej aplikacji:

[code=ruby]# vendor/engines/your_engine/spec/spec_helper.rb

require File.expand_path("…/…/…/…/…/spec/spec_helper.rb", FILE)

Rails.backtrace_cleaner.remove_silencers![/code]

[code=ruby]# spec/spec_helper.rb
ENV[“RAILS_ENV”] ||= ‘test’
require File.expand_path("…/…/config/environment", FILE)
require ‘rspec/rails’

…[/code]

O. Chyba właśnie o tego typu podpowiedź mi chodziło ^^. Dzięki bardzo .