TGViewer
Open Source: PHP Open Source: PHP @open_source_php · 422 subscribers
Post #51 798

Forwarded from Mikhail Savin

Rector-правило для соблюдения AAA паттерна в тестах

По результатам моего опроса почти половина разработчиков пользуются этим паттерном при написании тестов, но я лично периодически забываю "отбивать" секции комментами

Теперь можно делегировать это Rector'у - добавил правило EnforceAaaPatternRector.
Оно просто вставляет комментарии (и удаляет старые, если они неверно расположены), например:


public function testFoo(): void
{
// Arrange
$date = new DateTimeImmutable('2025-01-01');

// Act
$formatted = $date->format('Y-m-d');

// Assert
self::assertEquals('2025-01-01', $formatted);
}


Если же ваши тесты изначально не структурированы под это, то будут мисплейсы. Например, если вы делаете запрос, ассерты на него, потом новый запрос и новые ассерты (так часто тестят валидацию/авторизацию).
Надеюсь, правило поможет сделать такие нарушения более явными на кодревью
Telegram msavin Используете AAA (arrange-act-assert/given-when-then) при тестировании? да / нет / не пишу тесты
  • 🤔 3
  • 👍 2
  • 👎 1
More from @open_source_php
  1. Sep 17, 2026Простая задача, чтобы вкатиться в ряды контрибьюторов Testo https://github.com/php-testo/t…
  2. Nov 25, 2025True Async PHP Edmond Dantes призывает всех к обсуждению особенностей реализации нашумевше…
  3. Nov 11, 2025Сегодня состоялся релиз open-source админки MoonShine v4! Вкратце по нововведениям рассказ…
  4. Oct 21, 2025🤎 Драйвер для NATS от Thesis! Каждый, кто пишет на Golang, наверняка слышал про NATS. Это…
  5. Oct 13, 2025Есть задачка посложнее. Нужно добавить поддержку игнорирования мутаторов: - infection-igno…
  6. Oct 13, 2025📣 Infection – библиотека для мутационных тестов Infection довольно круто инструменты для…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →