Skip to content
/ clock Public

Go/Golang simulators of time, timer, ticker and context.

License

Notifications You must be signed in to change notification settings

jiliplus/clock

Repository files navigation

⏲️ Clock

Release Go Report Card Go Doc
Change Log Go Version MIT License
jili交流QQ群:23530093 微信公众号:jujili 知乎专栏:jili

clock 中的 realClocksimulator 结构体,都实现了 clock.Clock 接口。需要实际时间时,使用前者;需要人为地操纵时间的场合(比如:测试)中,使用后者。

总体思路

timecontext 标准库中,有一些函数和方法依赖于系统的当前时间。Clock 接口就是由这些内容组成。

clock 模块分为真实与虚拟的两个部分。真实的部分是以 time 和 context 标准库为基础,封装成了 Clock 接口。 虚拟部分也实现了 Clock 接口,只是这一部分可以人为的操控时间的改变。

安装与更新

在命令行中输入以下内容,可以获取到最新版

go get -u github.com/jujili/clock

真实的 Clock

c := clock.NewRealClock()

// 输出操作系统的当前时间
fmt.Println(c.Now())

真实的 Clock 就是把 timecontext 标准库中的相关函数,封装成了 realClock 的方法。

模拟的 Clock

now,_ := time.Parse("06-01-02", "20-01-26")
c := clock.NewSimulator(now)

// 输出: 2020-01-26 00:00:00 +0000 UTC
fmt.Println(c.Now())

*SimulatorcontextSim 虽然是模拟的。但是,实现了与 timecontext 标准库中同名函数一样的行为

更新 mock

在 clock 目录下,输入

$ mockgen -source=./interface.go -destination=./clock_mock_test.go -package=clock
$

About

Go/Golang simulators of time, timer, ticker and context.

Resources

License

Stars

Watchers

Forks

Packages

No packages published