Возможно, самым простым способом было бы установить таймер, который измеряет, сколько времени потребуется для истечения срока действия(), и добавить тестовое утверждение о том, что продолжительность составляет 100 мс.
В контексте теста, это будет выглядеть примерно так:
void startStopwatch();
void stopStopwarch();
unsigned getStopwatchResult();
TEST(TimerTest, TimerExpiresIn100ms) {
// set up mockTimer, etc.
EXPECT_CALL(mockedTimer, expired()).WillOnce(Invoke(&stopStopwatch));
startStopwatch();
// test logic, which waits until expired() is called, goes here
ASSERT_EQ(100u, getStopwatchResult());
}
Это очень грубо, конечно, но вы получите идею.
Дайте мне знать, если это поможет. В редакционной заметке, как правило, тесты, основанные на конкретном времени (т. Е. Они полагаются на событие, происходящее в течение определенного временного интервала), являются довольно ненадежными. Если есть очень хорошей причиной для этого ограничения 100 мс, возможно, стоит пересмотреть логику тестирования :)