За последние 24 часа нас посетили 38934 программиста и 7544 робота. Сейчас ищут 1623 программиста ...

phpunit тестируем protected

Тема в разделе "PHP для новичков", создана пользователем Дюран, 23 ноя 2023.

  1. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    291
    Симпатии:
    21
    Привествую.
    Народ, а после того как в phpunit выпилили из коробки тестирование закрытых и защищенных свойств, как вы их тестируете?
    Просто реально, публик св-в вообще не рекомендуют иметь, геттеры заводить на все тоже странно.
    Открываешь этим реализацию.
    Код (Text):
    1. class XXX
    2. {
    3.     protected $x;
    4.     public someChangeForX($strategy) {...}
    5. }
    Как же протестировать someChangeForX , всю его логику, если с чем assert делать, а не с чем.

    Вроде ж по науке - "Модульное тестирование — это процесс тестирования наименьшей функциональной единицы кода.(с)". Мне именно код надо протестировать, а не открытое апи обьекта.
    Те же protected методы протестить тоже надо, когда в них работа то делается...

    Самому открывать рефлексией, не покажется ли это говноподходом?
     
    don.bidon нравится это.
  2. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    Предложу юзать предыдущую версию phpunit'а и развязать дискуссию с Бергманом, в последней поучаствую.
     
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    947
    Симпатии:
    147
    В своё время начирикал систему событий за зарплату, спустя несколько лет переиспользовал в своём пет-проекте, где было время покрыть код тестами, оказалось -- пипец, нашёл кейс, где глючит, потому надо оставлять максимальные возможности для покрытия этими самыми тестами )
     
    artoodetoo нравится это.
  4. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    291
    Симпатии:
    21
    Да я уже начитался всех этих дискуссий, вижу что они жестко против этого. Даже не воспринимают что protected - это такое же АПИ, только потомкам.
    Какой то у них другой по логике подход. Нужно время на обмыслить.
    Раньше говорили что если вы сидите и в ручную тестируете свой код, что он рабочий, то не делайте так, а напишите тест.
    А эти утверждают что надо модульным тестировать просто ожидаемое поведение обьекта...
    И доставать инфу о нем только снаружи или моками.
    Хотя например если в обьекте идут ряды всяких вычислений, а наружу он светит только метод выполнить() , то что теперь, не тестировать его внутряки?..
    --- Добавлено ---
    Старые версии не нужны, есть расширение полифилл, с трейтом нужным
     
    artoodetoo нравится это.
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.223
    Адрес:
    там-сям
    Благими намерениями вымощена дорога в ад. Идея вроде бы хорошая, но реально родили трудности на ровном месте.