Мне нравятся вещи, которые методы шаблонов могут сделать для меня, поскольку они могут использоваться для существенного упрощения некоторого кода, который в противном случае пришлось бы писать снова и снова.
Однако мне очень тяжело тестировать любые классы, которые зависят от соавторов, у которых есть общедоступные шаблоны. Настоящая проблема заключается в том, что они не могут быть виртуальными, поэтому мой обычный метод создания подклассов зависимостей и создания заглушек не работает.
В настоящее время мое решение состоит в том, чтобы создать не шаблонный интерфейс, который включает все поддерживаемые типы, а затем использовать шаблоны в качестве детали реализации. Это тестируемое, но утомительное обновление для большого числа типов, проходящих через многие классы. Я полагаю, что я мог бы также изменить дизайн для использования полиморфизма на основе наследования, но если бы мои проблемы с тестированием могли быть решены без изменения системы, я бы предпочел это.
Я подумал, что мог бы что-то сделать, используя специализацию шаблонов, чтобы изменить поведение моей тестовой библиотеки и моей производственной библиотеки, но я не уверен, что это эффективно ... или даже возможно.
Итак, как лучше всего тестировать классы, которые используют шаблонные методы в своих зависимостях?