Skip to content
...

PHP-фреймворк для тестирования со вкусом хинкали

Или пельменей. Хлебобулочные тесты, сочный контроль над тестовой средой.

Testo Logo

🚧 В разработке

Testo находится в фазе активной разработки и пока не готов для продакшена. Можно поиграться и поэкспериментировать, но полагаться на него пока не стоит.

Хотите поддержать? Поставьте звёздочку или станьте спонсором.

Продуманный API ассертов

Функции проверок разбиты на семантические группы:

  • Фасад Assert:: — утверждения, выполняются сразу
  • Фасад Expect:: — ожидания, откладываются до завершения теста

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

php
use Testo\Assert;

// Пайповые ассерты — группировка по типу
Assert::string($email)->contains('@');
Assert::int($age)->greaterThan(18);
Assert::file('config.php')->exists();

Assert::array($order->items)
    ->allOf(Item::class)
    ->hasCount(3);

Разные способы объявления тестов

Пишите тесты так, как удобно вам.

  • Тестами могут быть классы, функции или даже атрибуты прямо в продуктовом коде (Inline Tests).
  • Классам не нужно наследование от базового тестового класса. Код остаётся чистым.
  • Обнаружение тестов по соглашениям об именовании или по явным атрибутам.
php
// Явное объявление теста в методе с атрибутом #[Test]

final class OrderTest
{
    #[Test]
    public function createsOrderWithItems(): void
    {
        $order = new Order();
        $order->addItem(new Product('Bread'));

        Assert::int($order->itemCount())->equals(1);
    }
}

Полноценная интеграция с IDE

Нативный плагин для PhpStorm и IntelliJ IDEA.

Весь привычный функционал: запуск и перезапуск из gutter-иконок, навигация между тестами и кодом, отладка с брейкпоинтами, генерация тестов, дерево результатов.

Get Plugin 4.1 127