Socket
Socket
Sign inDemoInstall

github.com/jujili/clock

Package Overview
Dependencies
2
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    github.com/jujili/clock

Package clock 可以模拟 time 和 context 标准库的部分行为。 All methods are safe for concurrent use.


Version published

Readme

Source

:timer_clock: 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
$

FAQs

Last updated on 20 May 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc