Тест должен падать при нарушении наблюдаемого контракта, а не при любом внутреннем рефакторинге.
Так когда всё-таки тест должен падать и что именно он должен проверять - реализацию или контракт/интерфейс класса?
Тест должен падать при нарушении наблюдаемого контракта, а не при любом внутреннем рефакторинге.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Тест должен падать при нарушении наблюдаемого контракта, а не при любом внутреннем рефакторинге.
Проверяйте входы, результаты, ошибки и значимые внешние взаимодействия. Внутренние детали тестируют только там, где они действительно часть требования; чрезмерная привязка к приватным вызовам делает проверки хрупкими без дополнительной защиты пользователя.