createMock падает: класс платёжного клиента объявлен final
final class YooKassaClient
{
public function charge(Money $amount, string $token): PaymentResult { ... }
}
// в тесте
$client = $this->createMock(YooKassaClient::class);
PHPUnit сообщает, что final-класс нельзя замокать. Убирать final не хочется. Как спроектировать код, чтобы сервис оплаты тестировался?
- Зависеть от интерфейса шлюза и мокать его
- Убрать final у всех классов проекта
- Вызывать настоящий платёжный API в тестах
- Сделать методы клиента статическими
