Вы на правильном пути.Вам не нужны хрупкие тесты, которые нужно менять каждый раз, когда вы реорганизуете тестируемую систему.
В общем, я концентрирую свои тесты на общедоступном интерфейсе.Если ваш публичный интерфейс меняется, вам, вероятно, придется изменить не только тесты.
Я также стараюсь проводить тестирование состояния вместо тестирования поведения, когда это возможно.Поэтому я обычно использую заглушки вместо макетов .(Большинство изолирующих / насмешливых фреймворков позволяют вам создавать либо.) Я проверяю состояние тестируемой системы (или класса), а не прошу фиктивный объект проверить себя.
Тем не менее, я стараюсь быть гибким,Если в данном случае имеет смысл тестировать поведение с имитацией, я воспользуюсь этим.Если мне нужно разоблачить внутренности, чтобы получить приличное освещение, я сделаю это.
РЕДАКТИРОВАТЬ : См. Также эту статью Скотта Бэйна .