Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 1.66 KB

bootstrap.rst

File metadata and controls

51 lines (38 loc) · 1.66 KB

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 :ref:`installing testing <testing-installation>` 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:

  // 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:

<!-- 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.