Вступить в клуб →
средняявопросТестирование: PHPUnit и feature-тесты

createMock падает: класс платёжного клиента объявлен final

final class YooKassaClient
{
    public function charge(Money $amount, string $token): PaymentResult { ... }
}

// в тесте
$client = $this->createMock(YooKassaClient::class);

PHPUnit сообщает, что final-класс нельзя замокать. Убирать final не хочется. Как спроектировать код, чтобы сервис оплаты тестировался?

  • Зависеть от интерфейса шлюза и мокать его
  • Убрать final у всех классов проекта
  • Вызывать настоящий платёжный API в тестах
  • Сделать методы клиента статическими

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела