Идея состоит в том, чтобы просто переместить все, что трудно проверить (т.е. трудно контролировать в целях модульного тестирования), за интерфейс.Затем добавьте фальшивку или макет, который дает вам необходимый контроль.
Пост блога, который вы указали в вопросе, по большей части верен. Однако лично я не стал бы делать последний шаг в созданииTestableClock, который создает зависимость.Я бы предпочел передать его в качестве аргумента ctor или параметра метода.