Як налаштувати процес початкового завантаження перед виконанням тестів

Дата оновлення перекладу 2022-12-23

Як налаштувати процес початкового завантаження перед виконанням тестів

Іноді при проведенні тестів, вам знадобиться зробити додаткову роботу початкового завантаження перед їх проведенням. Наприклад, якщо ви проводите функціональний тест і ввели нове джерело перекладу, то вам знадобиться очистити ваш кеш до проведення цих тестів.

Під час установки тестувань з використанням 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'])) {
+     // виконує команду "php bin/console cache:clear"
+     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, кеш буде очищено автоматично файлом початкового завантаження до виконання всіх тестів.