Symfony Testing Cookbook

From Littledamien Wiki
Jump to navigation Jump to search

Unit/functional tests with database connections on remote machines

Remember that since phpunit is running from the command-line, the remote host is NOT localhost like it would be when invoking a controller through a browser request. Otherwise, the server returns a 500 error stating that access is denied for user@localhost or whatever.

when running phpunit, it's necessary to switch the database host from localhost to the ip address of the MySQL server.

Set up two separate Symfony "parameters" configuration files, parameters.yml and parameters_remote.yml. Load the _remote parameters into /app/config/config_test.yml:

# /app/config/config_test.yml
imports:
    # ...
    - { resource: parameters_remote.yml }
#...

doctrine:
    dbal:
        driver:   "%database_driver%"
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8

Don't forget to set it back before trying to load a page in a browser.

HTTP authentication

Authentication credentials can be passed to the client object or request method.[1]

$client = static::createClient(array(), array(
    'PHP_AUTH_USER' => 'username',
    'PHP_AUTH_PW'   => 'pa$$word',
));

Notes