Как настроить процесс начальной загрузки перед выполнением тестов

Дата обновления перевода 2023-01-11

Как настроить процесс начальной загрузки перед выполнением тестов

Иногда при проведении тестов, вам понадобится проделать дополнительную работу начальной загрузки перед их проведением. Например, если вы проводите функциональный тест и ввели новый источник перевода, тогда вам понадобится очистить ваш кеш до проведения этих тестов.

При установке тестирования , используя Symfony Flex, он уже создает файл tests/bootstrap.php, который запускается PHPUnit перед вашими тестами.

Вы можете изменить этот файл, чтобы добавить пользовательскую логику:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 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');
  }

+ if (isset($_ENV['BOOTSTRAP_CLEAR_CACHE_ENV'])) {
+     // executes the "php bin/console cache:clear" command
+     passthru(sprintf(
+         'APP_ENV=%s php "%s/../bin/console" cache:clear --no-warmup',
+         $_ENV['BOOTSTRAP_CLEAR_CACHE_ENV'],
+         __DIR__
+     ));
+ }

Note

Если вы не используете Symfony Flex, убедитесь в тому, что этот файл сконфигурирован как файл начальной загрузки в вашем файле phpunit.xml.dist:

1
2
3
4
5
6
7
<!-- phpunit.xml.dist -->
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit
    bootstrap="tests/bootstrap.php"
>
    <!-- ... -->
</phpunit>

Теперь вы можете обновить файл phpunit.xml.dist, чтобы заявить о пользовательской переменной окружения, представленной в tests/bootstrap.php:

1
2
3
4
5
6
7
8
9
10
<!-- phpunit.xml.dist -->
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit>
    <php>
        <env name="BOOTSTRAP_CLEAR_CACHE_ENV" value="test"/>
        <!-- ... -->
    </php>

    <!-- ... -->
</phpunit>

Теперь, при запуске vendor/bin/phpunit, кэш будет очищен файлом
начальной загрузки автоматически до выполнения всех тестов.