У меня есть собственная простая реализация Timer
, когда таймер создается, он регистрируется в TimerHandler
,
Timer::Timer()
: tick_counter_(0),
target_tick_(0),
increment_(false),
started_(false),
elapsed_(false) {
handlers::TimerHandler::RegisterTimer(*this);
}
Функция RegisterTimer()
является статической, как вы можете видеть, и TimerHandler
реализован как синглтон.
Как вы все знаете, это создает проблемы при модульном тестировании! Тестирование класса Timer
и класса TimerHandler
может быть нормальным и не сложным. Но при тестировании других классов, использующих Timer
, это иногда становится сложным.
Я хочу получить некоторые идеи о том, как решить эту проблему, используя другой тип дизайна.
Мое единственное решение, которое у меня естьв настоящее время нужно использовать простое внедрение зависимостей, просто передавая TimerHandler
в качестве аргумента везде, где я хочу использовать Timer
. Но это сильно загромождает мой код, поэтому я надеюсь, что смогу избежать этого!