ja, das ging mir eigentlich ähnlich: Im Wesentlichen wollte ich auch die richtigen Ruby-Konstruktoren benutzen können, um Testdaten zu bauen. Wir haben im Model Sachen wie acts_as_list, acts_as_permalink, abhängige Objekte, die im after_create angelegt werden usw. - was das alles in der Datenbank tut, wollte ich nicht unbedingt von Hand in den fixtures rekonstruieren - mal ganz abgesehen davon, dass man das auch ständig ändern&konsistent halten muss, wenn sich an den Models was ändert. Gestolpert bin ich eben im Wesentlichen darüber, dass man über fixtures Objekte erzeugen kann, die nicht valide sind und sich über .new nicht erzeugen lassen.

Wir machen das nicht mit scenarios, sondern mit einer einfachen Factory, die uns per Ruby ein fertig instanziierte Objekt-Struktur baut. Als Daumenregel benutzen wir solche Factories nur in den functional-tests: In den Unit-Tests wird ja erstmal getestet, dass eine solche Factory auch vernünftige Ergebnisse liefert.

Ich hab hier den effektiven Unterschied zu den scenarios noch nicht gesehen: Da wird noch der zusätzliche Generierungsschritt für die Fixtures eingebaut, aber wenn ich eh schon per Ruby die entsprechenden Strukturen aufbau und mir die fertig generierten Objekte abholen kann, wofür brauch ich dann noch Fixtures, die dieselbe Struktur nur über einen anderen Weg aufbauen?!

Viele Grüße
Stefan

Am 12.09.2007 um 10:44 schrieb Niko Dittmann:

Eins der großen Probleme bei Fixtures ist, dass komplexere Assoziationen scheiss-kompliziert zu handeln sind. Wir benutzen z.Zt. eine modifizierte Version von fixture scenarios (http:// code.google.com/p/fixture-scenarios/). Komplexere Objektstrukturen werden so quasi in Ruby geschrieben und über Models (inkl. Validierung; ein weiterer Vorteil) in die Datenbank geschrieben. Klassische yml-Fixtures werden zwar immer noch erstellt, dienen aber nur als Cache.

Niko.

--
___________________________________
niko dittmann
gottfr.-keller-str. 36
78467 konstanz
GERMANY

mail:         [EMAIL PROTECTED]
fon:                +49 7531 959531
fax:           +49 1212 512 852 148
aim:                         ende42
___________________________________


_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an