Search by

phpsoftbox / test-utils

inspector-who

Testing utilities for the PhpSoftBox framework

Package info

github.com/phpsoftbox/testutils

pkg:composer/phpsoftbox/test-utils

Statistics

Installs: 132

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-09-29 10:26 UTC

This package is auto-updated.

Last update: 2026-09-29 11:56:51 UTC


README

Утилиты для тестирования пакетов и приложений на PhpSoftBox.

Документация

Подробная документация разбита по темам в docs/:

  1. Установка и Bootstrap
  2. Базовые TestCase и HTTP-клиент
  3. Перезагрузка БД
  4. Inertia и snapshot-тестирование
  5. Fixture API (подробно)
  6. Интеграция fixture в приложение

Примеры

Быстрый старт

composer require --dev phpsoftbox/test-utils

Опциональные зависимости

Базовые утилиты пакета не требуют БД, ORM, Auth и Session. Эти компоненты подключаются только для соответствующих helper-ов:

  • phpsoftbox/session — WebTestCase, TestHttpClient, session/CSRF helpers;
  • phpsoftbox/auth — actingAs(), withRole(), интеграция с guard;
  • phpsoftbox/database — database reloader и transaction helpers;
  • phpsoftbox/orm — entity helpers и ORM fixture relations.

Используйте:

  • ApplicationTestCase — для интеграционных тестов без HTTP;
  • WebTestCase — для контроллеров и HTTP-интеграции.

Для ручной перезагрузки тестовой БД:

php psb test:db:reload --mode=dump --connections=default

Если --connections не указан, будут перезагружены все подключения из DatabaseReloaderConfig.

Режимы БД: transaction (по умолчанию), reset — очистка данных без пересоздания схемы для тестов, где код коммитит в отдельных соединениях, dump — пересоздание БД для тестов с DDL. Подробнее — docs/03-database-reloader.md.

Для параллельного запуска:

php psb test:parallel --processes=4

Важно

  • FixtureRunner/FixtureContext не завязаны на контейнер.
  • FixtureRunner поддерживает зависимости через DependentFixtureInterface.
  • Area/domain-специфичные фикстуры остаются в приложении (tests/Utils/...).

Тесты пакета

Интеграционные тесты режима reset работают с настоящими MariaDB, MySQL и PostgreSQL из docker-compose фреймворка: make select-testutils поднимает php-cli, mariadb и postgres; MySQL — профиль mysql (docker compose --profile mysql up -d mysql), затем make php-test. Если сервер недоступен, тесты падают (а не пропускаются). DSN можно переопределить через TEST_UTILS_MARIADB_DSN, TEST_UTILS_MYSQL_DSN и TEST_UTILS_POSTGRES_DSN.