How to Customize the Bootstrap Process before Running Tests
Sometimes when running tests, you need to do additional bootstrap work before running those tests. For example, if you're running a functional test and have introduced a new translation resource, then you will need to clear your cache before running those tests.
When installing testing using Symfony Flex,
it already created a tests/bootstrap.php
file that is run by PHPUnit
before your tests.
You can modify this file to add custom logic:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// tests/bootstrap.php
use Symfony\Component\Dotenv\Dotenv;
require dirname(__DIR__).'/vendor/autoload.php';
if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) {
require dirname(__DIR__).'/config/bootstrap.php';
} elseif (method_exists(Dotenv::class, 'bootEnv')) {
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
}
+ // executes the "php bin/console cache:clear" command
+ passthru(sprintf(
+ 'APP_ENV=%s php "%s/../bin/console" cache:clear --no-warmup',
+ $_ENV['APP_ENV'],
+ __DIR__
+ ));
Note
If you don't use Symfony Flex, make sure this file is configured as
bootstrap file in your phpunit.xml.dist
file:
1 2 3 4 5 6 7
<!-- phpunit.xml.dist -->
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit
bootstrap="tests/bootstrap.php"
>
<!-- ... -->
</phpunit>
Now, when running vendor/bin/phpunit
, the cache will be cleared
automatically by the bootstrap file before running all tests.
This work, including the code samples, is licensed under a
Creative Commons BY-SA 3.0 license.