|
|
5 år sedan | |
|---|---|---|
| .. | ||
| .gitignore | 5 år sedan | |
| .travis.yml | 5 år sedan | |
| BUILD | 5 år sedan | |
| LICENSE | 5 år sedan | |
| README.md | 5 år sedan | |
| clockwork.go | 5 år sedan | |
a simple fake clock for golang
Replace uses of the time package with the clockwork.Clock interface instead.
For example, instead of using time.Sleep directly:
func my_func() {
time.Sleep(3 * time.Second)
do_something()
}
inject a clock and use its Sleep method instead:
func my_func(clock clockwork.Clock) {
clock.Sleep(3 * time.Second)
do_something()
}
Now you can easily test my_func with a FakeClock:
func TestMyFunc(t *testing.T) {
c := clockwork.NewFakeClock()
// Start our sleepy function
my_func(c)
// Ensure we wait until my_func is sleeping
c.BlockUntil(1)
assert_state()
// Advance the FakeClock forward in time
c.Advance(3)
assert_state()
}
and in production builds, simply inject the real clock instead:
my_func(clockwork.NewRealClock())
See example_test.go for a full example.
clockwork is inspired by @wickman's threaded fake clock, and the Golang playground