Тест прошёл, хотя метод возвращает строку «0» вместо числа 0
$this->assertEquals(0, $cart->discountFor($user));
После рефакторинга discountFor стал возвращать строку "0", и в другом месте сравнение === 0 сломало расчёт. Тест при этом зелёный. Почему?
- assertEquals сравнивает нестрого; нужен assertSame
- PHPUnit не различает типы в принципе
- Нужно поменять местами аргументы
- Строка «0» и число 0 в PHP 8 идентичны
