2011-02-06 10 views
5

I może być czegoś brakuje, ale siedzę w tym scenariuszu:Ruby on Rails: testowanie jednostkowe modele non ActiveRecord i nadal załadować osprzętu

mam non modelu ActiveRecord, które chcesz przetestować. Otrzymałem jego klasę przypadków testowych od: Test :: Unit :: TestCase.

Jednak klasa przypadków testowych dla modelu, używa w sobie innych klas modeli klasy activerecord i chcę załadować dla nich urządzenia. Moim problemem jest to, że metoda klasy Oprawy jest dostępna tylko wtedy, gdy podklasy klasy przypadków testowych z ActiveSupport :: TestCase (jest zdefiniowany w ActiveRecord :: TestFixtures który zostanie włączonych ActiveSupport :: TestCase).

Każda pomoc, która uruchamia testy daje mi błąd: niezdefiniowana metoda "urządzenia" (co jest zrozumiałe) iw przypadku, gdy wyprowadzam moją klasę przypadków testowych z ActiveSupport :: TestCase, skarży się, że nie ma odpowiedniej tabeli DB. Ponadto nie chcę tworzyć obojętnej tabeli do tworzenia kopii zapasowej mojej klasy modelu.

Dziękuję za tonę!

Odpowiedz

4

Możesz użyć ActiveSupport::TestCase bez klasy będącej klasą ActiveRecord (an example - ale ten projekt nie używa urządzeń), więc coś innego musi być przyczyną tego. Musi to być coś o tym, jak używasz urządzeń lub konfiguracji urządzeń. Być może, przez przypadek, czy masz plik fixture dla tego modelu, który nie jest AR, który próbujesz przetestować?

+1

Dzięki za tonę! Właściwie skomentowałem wszystkie urządzenia (: wszystkie) w test_helper, a następnie jawnie zadeklarowałem urządzenia, które chcę załadować w klasie testowej niezwiązanej z modelem AR, i to teraz działa. Odpowiednie urządzenia (: wszystkie) próbował połączyć się z odpowiednią tabelą DB, której tam nie było, a więc zgłaszał błąd. –

+0

W jaki sposób zadeklarowałeś urządzenia, które chcesz załadować w klasie testowej modelu innej niż AR? – barelyknown

+0

@VaibhavGumashta Tak, wszystkie urządzenia (: wszystkie) również powodowały u mnie problemy. Równie dobrze możesz je zadeklarować w klasach, w których ich potrzebuję. +1 dla was obojga. – Ben