Юнит-тестирование на самом деле не о шаблонах тестирования, а о тестировании правильной реализации методов и функций. Шаблон посетителя представляет собой особую структуру классов, и для каждого из задействованных классов (в частности, ConcreteVisitor и ConcreteElement) вам понадобятся модульные тесты.
Когда вы обрели уверенность в том, что ваши методы класса работают нормально, вы можете также использовать свою инфраструктуру модульных тестов для разработки интеграционных тестов. Не начинайте тестирование интеграции сразу: вы обнаружите, что вы разрабатываете много интеграционных тестов, которые фактически тестируют поведение определенного класса, то есть модульных тестов.
Нужны ли вам фиктивные объекты или вы можете использовать «настоящие» объекты - это другой вопрос. Это во многом зависит от того, ведут ли себя объекты достаточно хорошо для целей модульного тестирования (т. Е. Они не требуют большого количества дополнительных зависимостей и т. Д.), И от того, являются ли сами объекты модульным тестированием (т. Е. Нужно быть в состоянии доверять этим объектам 100%). Проблема фиктивных и реальных объектов ранее решалась в стеке, поэтому ищите теги unittest.