initialTime = time.Date(2014, 1, 1, 3, 0, 30, 0, time.UTC) fakeClock = fakeclock.NewFakeClock(initialTime) }) Describe("Now", func() { It("returns the current time, w/o race conditions", func() { go fakeClock.Increment(time.Minute) Eventually(fakeClock.Now).Should(Equal(initialTime.Add(time.Minute))) }) }) Describe("Sleep", func() { It("blocks until the given interval elapses", func() { doneSleeping := make(chan struct{}) go func() { fakeClock.Sleep(10 * time.Second) close(doneSleeping) }() Consistently(doneSleeping, Δ).ShouldNot(BeClosed()) fakeClock.Increment(5 * time.Second) Consistently(doneSleeping, Δ).ShouldNot(BeClosed()) fakeClock.Increment(4 * time.Second) Consistently(doneSleeping, Δ).ShouldNot(BeClosed()) fakeClock.Increment(1 * time.Second) Eventually(doneSleeping).Should(BeClosed()) }) })