Как запустить функциональный тест в D8 в Docker

Написанное актуально для Drupal 8.6.10-dev

Для других версий Drupal набор и версии зависимостей может меняться. Это связано с тем, что при написании тестов для D8 наследуются классы phpunit. В различных версиях этой библиотеки набор методов и их параметры могут отличаться. В результате при попытке запуска теста будут появляться ошибки, свидетельствующие о несовместимости версии D8 и библиотек, необходимых для запуска тестов.

Устанавливаем зависимости:

  • composer install --dev
  • composer require --dev phpunit/phpunit 6.5.14
  • composer require --dev symfony/phpunit-bridge ^3.4.3
  • composer require --dev behat/mink-goutte-driver
  • composer require --dev mikey179/vfsStream
     

Настраиваем phpunit:

Для этого копируем файл core/phpunit.xml.dist в phpunit.xml и настраиваем необходимые параметры. В большинстве случаем можно оставить его как есть.

 

Далее все действия производятся внутри контейнера php.

Если необходимо, добавляем env-variables(их так же можно прописать в phpunit.xml):

export SIMPLETEST_DB='mysql://db_user:db_pass@mariadb/db_name';

export SIMPLETEST_BASE_URL='http://test-site.loc:8888';

 

Запускаем тестовый сервер:

drush runserver $SIMPLETEST_BASE_URL &

 

Запускаем тест:

vendor/bin/phpunit --filter testMethodName path/to/module/tests/src/Functional/TestClassName.php

Команда может зависеть от структуры вашего проекта. Она запускается из папки в которой лежит phpunit.xml и все пути соответственно относительно этой папки.

Чтобы запустить все тесты из TestClassName.php необходимо убрать параметр --filter testMethodName.