With Smyfony2 and Doctrin2, data fixtures can be created using the following example: http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html
What I would like is to be able to use this concept for testing so that setup/teardown can create a pure test data environment for functional testing. How might I go about having a specific set of test-only fixtures run during functional tests and how do I separate these fixtures from my standard fixtures so that the console command ignores them?
It seems that the way to do it would be to replicate the functionality of the doctrine:fixtures console command and store the test fixtures elsewhere. Does anyone have a better solution?
An alternative to breaking out fixtures by directory is to use a custom fixture class. Your fixture classes would then extend this class and specify the environments it will actually be loaded in.
Your fixtures would end up looking like this:
I believe that this should work with both ORM an ODM data fixtures.
The easiest way is to put your fixtures into different folders and then load them with the
php app/console doctrine:fixtures:load --fixtures=../src/Acme/TestBundle/DataFixtures/ORM/test
command. The fixtures option must point to the relative path from where you app folder!You can then split up your data into initial, test and so on or create dev, test, staging, prod fixtures, just as you like.
If you want to mix them up, I don't know any better solution than what I did: I createt a "templates" folder where all fixtures reside in. In my dev folder, I create one class which extends the proper fixture class from template and adjusts what is needed to adjust (like overriding the
getOrder
method). It's not perfect and I guess one could think about extending the fixtures:load command to take multiple paths, but it works for me.