faketime
Mock time.Now() in golang
Examples
time.Date style
package main
import (
"fmt"
"time"
"github.com/AvivYaish/faketime"
)
func main() {
fmt.Println(time.Now()) // 2017-06-07 18:59:35.01959464 +0900 JST
f := faketime.NewFaketime(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
defer f.Undo()
f.Do()
fmt.Println(time.Now()) // 2009-11-10 23:00:00 +0000 UTC
}
NewFaketimeWithTime
time.Time style
package main
import (
"fmt"
"time"
"github.com/AvivYaish/faketime"
)
func main() {
fmt.Println(time.Now()) // 2017-06-07 18:59:35.01959464 +0900 JST
t := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC)
f := faketime.NewFaketimeWithTime(t)
defer f.Undo()
f.Do()
fmt.Println(time.Now()) // 2009-11-10 23:00:00 +0000 UTC
}
DoIncrement
The DoIncrement function allows faked time to increment.
package main
import (
"time"
"fmt"
"github.com/AvivYaish/faketime"
)
func main() {
f := faketime.NewFaketimeWithTime(time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC))
f.DoIncrement()
t1 := time.Now()
time.Sleep(1 * time.Second)
t2 := time.Now() // t2 will be one second after t1
fmt.Println(t1 != t2) // Should not be equal, because time has passed
fmt.Println(time.Second == t2.Sub(t1).Round(time.Second)) // Should be equal, because a single second has passed
}