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