Как настроить запуск PHPunit на PHPStorm + Windows WSL, Docker Desktop

Базовая настройка Докера в PHPStorm

Сначала нужно настроить подключение WSL к докеру.

Для этого просто выбираем "Docker for Windows" в File > Settings > Build, Execution, Deployment > Docker:

Настройка через Docker image

Так мы настраиваем запуск теста через Docker, с указанием какой именно имейдж использовать при запуске. PHPStorm будет запускать свой контейнер на базе указанного имейджа (FROM image) кажды раз при запуске теста и удалять его по завершению теста.

Путь /opt/project в настройках - это WorkingDir папка внутри создаваемого контейнера, в которую маунтится папка текущего проекта. Т.е. /opt/project - это папка текущего проекта.

Пример mounts конфига из контейнера со скринов ниже:

"HostConfig": {
	"Binds": [
		"\\wsl$\Ubuntu\home\domains\qr-product-nutrition:/opt/project:rw"
	],
	...
}
"Mounts": [
	...
	{
		"Type": "bind",
		"Source": "\\wsl$\Ubuntu\home\domains\qr-product-nutrition",
		"Destination": "/opt/project",
		"Mode": "rw",
		"RW": true,
		"Propagation": "rprivate"
	}
],

Создаем CLI интерпритатор на базе Docker image:

Интерпритатор создан (выбираем его, если не выбралось автоматически):

Конфигурируем "Test Framework" под созданный интерпретатор

Это - конфиг для запуска тестов. Здесь мы будем использовать только что созданный интерпритатор:

Проверка

Пробуем запустить отдельный тест кейс и видим что все работает:

Заметки

Если в будущем вы Удалите CLI интерпритатор и создадите его заново, то в настройках Test Framework интерпритатор станет недоступным (скорее всего здесь он связывается по созданному ID интерпритатора). Понять существует ли интерпритатор можно обратив внимение на его название (оно будет undefined):

В этом случае вам нужно пересоздать интерпритатор (настройку) и выбрать его заново.

Если в будущем вы пересоздадите имейдж, то все также будет работать, важно только чтобы название имейджа не изменилось.

Настройка через docker-compose

Такой тип настройки будет использовать текущий контейнер который описан в docker-compose.yml файле. В этом случае PHPStom не будет создавать свой контейнер, а будет использовать "наш".

Если "наш" контейнер не запущен в момент запуска теста, то PHPStorm его запустит, используя настройки из docker-compose.yml файла.

Создаем CLI интерпритатор на базе docker-compose:

Настроим созданный интерпритатор:

  • Переименуем (чтобы иметь более говорящее название).
  • Укажем чтобы он подключался к существующему контейнеру (если не указать, то шторм будет создавать свой контейнер, на базе docker-compose.yml настроек).
  • Проверим что все работает.

Выбираем интерпретатор в настройках PHP:

Конфигурируем "Test Framework" под созданный интерпретатор

Проверяем

1 комментарий
    Войти