Setting up testing and fixtures in Symfony2 is vital if you plan on starting Test Driven Development or you simply want to start covering your code with properly written tests that can access mock data.


1. Install PHPUnit and php 5.6

The first thing you need to do is to install PHPUnit on your machine:

and then, if needed, also upgrade your PHP version to 5.6:

and make sure everything’s ok by running: phpunit -c app/

Please note that this is not a testing tutorial so if you’d like to learn more about how to actually test your Symfony2 app, then please read their documentation.


2. Setup and create a test database

In order to be able to configure testing and fixtures in a Symfony2 app a separate, independent database is needed so that your dev environment is not affected.

In the config_test.yml file you simply need to add:

then simply run php app/console doctrine:database:create --env=test


RelatedSend Emails in Symfony2: The Right Way


3. Build the BaseTestSetup class

Once our test database is ready we can start building our BaseTestSetup class, one which will serve as parent for all of our tests.


4. Install the LiipFunctionalTestBundle

Even though Symfony does have an out of the box solution to setup and test your app, the LiipFunctionalTestBundle provides base classes for functional tests to assist in setting up testing and fixtures and HTML5 validation.

After you install and configure the bundle, go back to your BaseTestSetup class and make the necessary modifications:

The new code above simply drops and creates the database each them tests run. Then it loads the fixtures that you’ll need. The LoadUserData class does not exist yet so we’ll go right ahead and add it by following the handy tutorial found on Symfony’s website.


5. Write the very first test

Now that have your fixtures ready, you can go ahead and write your first test. Create a new file in your AppBundle/Tests folder called UserTest.php, next to BaseTestSetup.php:


And that’s about it! You now have everything you need to properly test your awesome app.


Need help with your next project?

Contact us

Privacy Preference Center