Testowanie modeli z dużą ilością asocjacji

Hej,
mam aplikację (sklep internetowy) z dużą ilością modeli (ok 60). Jeden z nich ma sporą ilość asocjacji (ok 15) - model order. Modele, będące z nim w relacji też są w relacji jeszcze z innymi modelami. Miałem już kilka podejść do testowania tej aplikacji, ale dopiero teraz mam w perspektywie wolny weekend i względny spokój na studiach. Niestety, testowałem dotychczas dość proste aplikacje, w przypadku powyższej głównym wyzwaniem jest przygotowanie danych testowych.
Oczywiścię robię research narzędzi, które mi się przydadzą. Na razie zamierzam pisać specki do modeli i cucumbera.
Pytanie do Was: w jaki sposób przygotować dane testowe do tak dużej liczby modeli, które są ze sobą w różnych radosnych asocjacjach. Będę wdzięczny za pomysły i porady, a tymczasem spadam czytać o factory_girlach, machinistach, fakerach oraz patrzeć, jak są testowane inne aplikacje.

Factory_girl i jedziesz, załatwi Ci cały problem z asocjacjami i ich zagnieżdżaniem.

Zwłaszcza, że od ostatniej wersji można robić callbacki:

Factory.define :order_with_products, :parent => :order do |order| order.after_create do |order_instance| 5.times do product = Factory.create(:product) Factory.create(:line_item, :order => order_instance, :product => product) end end end

Na razie factory girl mi sie sprawdza. Ma jednak kolejne pytanie:
Mam model Status, który przechowuje możliwe statusy zamowienia. Jako, że statusów jest tylko 6 (i raczej nie będą się zmieniać), to zrobiłem 6 różnych fabryk, oddzielnie dla każdego statusu, o nazwach status_{nazwa_statusu}. W ten sposób będę łatwo odwoływać się do nich w testach. Czy według Was jest to eleganckie rozwiązanie, czy coś byście zmienili?

Każde rozwiązanie jest fajne jeśli czujesz się z nim dobrze i pozwala przyjemnie, wydajnie programować.

[quote=slawosz]Na razie factory girl mi sie sprawdza. Ma jednak kolejne pytanie:
Mam model Status, który przechowuje możliwe statusy zamowienia. Jako, że statusów jest tylko 6 (i raczej nie będą się zmieniać), to zrobiłem 6 różnych fabryk, oddzielnie dla każdego statusu, o nazwach status_{nazwa_statusu}. W ten sposób będę łatwo odwoływać się do nich w testach. Czy według Was jest to eleganckie rozwiązanie, czy coś byście zmienili?[/quote]
Jeżeli coś się prawie nie zmienia, to ja to wrzucam jako fixtures.

Ale tak jak to zrobiłeś też jest ok, takie trochę bardziej dynamiczne fixtures :wink:

Dzięki za pomoc, factory_girl świetnie się sprawdza :slight_smile: