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: 115

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-09-22 13:58 UTC

This package is auto-updated.

Last update: 2026-09-22 13:58:24 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 и PostgreSQL из docker-compose фреймворка: make select-testutils поднимает php-cli, mariadb и postgres, затем make php-test. Если сервер недоступен, тесты падают (а не пропускаются). DSN можно переопределить через TEST_UTILS_MARIADB_DSN и TEST_UTILS_POSTGRES_DSN.