Представим что Вам нужно протестировать функцию, которая работает со временем, ожидая, к примеру, 5 секунд. Как протестировать такой код в google mock чтобы при каждом прогоне теста не ждать 5 секунд? Для того, чтобы тесты выполнялись мгновенно, необходимо вынести функционал работы с системным временем в отдельную абстракцию. Вместо прямого вызова std::this_thread::sleep_for или использования std::chrono::system_clock код должен обращаться к интерфейсу, абстрагирующему работу со временем. class IClock { public: virtual ~IClock() = default; virtual void sleep(std::chrono::milliseconds duration) = 0; }; В production коде используем унаследованный от IClock класс реально ожидающий заданный временной интервал. class RealClock : public IClock { public: void sleep(std::chrono::milliseconds duration) override { std::this_thread::sleep_for(duration); } Теперь возьмем следующий код и протестируем метод doWork. class TimerWorker { std::shared_ptr<IClock> clock_; public: