Когда вы используете шаблон метода шаблона для реализации некоторых функций, вы можете столкнуться с одной проблемой — как протестировать этот класс. Конечно, вы можете расширить этот класс, но если у него так много зависимостей и так много тестовых случаев, это сделает ваши тестовые файлы неподдерживаемыми. В этой статье сначала будет представлен шаблон метода шаблона и мое решение.
Что такое шаблон шаблонного метода
Если вы хотите контролировать весь поток, но надеетесь, что клиент поможет вам реализовать действие в потоке, вам нужно будет использовать этот шаблон.
Например, у вас может быть один вызов абстрактного класса Restaurant. В этом классе у вас будет несколько защищенных абстрактных функций и одна общедоступная реализованная функция. cookForCustomer будет шаблоном для управления всем потоком, но каждый конкретный класс может иметь собственную реализацию абстрактной функции.
Как это проверить
Конечно, мы можем просто протестировать реализованный, но иногда это предложение библиотеки для нашего клиента, поэтому его невозможно протестировать, и мы также хотим убедиться, что поток работает правильно. Поэтому, возможно, вы расширите абстрактный класс, чтобы проверить поток.
Одна проблема заключается в том, что если у нас есть 10 тестовых случаев, вам нужно создать 20 классов, потому что у них может быть разный поток, когда в методе шаблона есть несколько операторов if. Другая проблема заключается в том, что код сложно поддерживать и читать. Никто не может знать реальный поток, если у вас есть 30 абстрактных функций в классе.
Решить проблемы
Чтобы решить проблемы, нам сначала нужен один декоратор класса, этот декоратор поможет вам изменить функции возврата, а также поможет вам записать путь.
После этого в тестовом коде вы просто утверждаете путь, записанный декоратором. Это также упрощает просмотр потока в тесте.