golangのTimer, Tickerのモック
time.Timer, time.Tickerを使ったコードのテストのために、それらをモックする以下のコードを書いた。 しかし、私が解決したい問題としては、tickerの時間を秒からミリ秒へ変えること。 そのため、MockTimerでも内部でtime.Tickerを保持しミリ秒で動くものとなる。 その場合、time.NewTicker にて指定するDurationを短くすれば解決する。 従って不要。 時間無駄にしたorz...
type Ticker interface { Set(d *time.Duration) C() <-chan time.Time Stop() Reset(d time.Duration) } type TickerDuration time.Duration func NewRealTimer(d TickerDuration) *RealTicker { return &RealTicker{tk: time.NewTicker(time.Duration(d))} } type RealTicker struct { tk *time.Ticker } func (t *RealTicker) Set(d *time.Duration) { t.tk = time.NewTicker(*d) } func (t *RealTicker) C() <-chan time.Time { return t.tk.C } func (t *RealTicker) Stop() { t.tk.Stop() } func (t *RealTicker) Reset(d time.Duration) { t.tk.Reset(d) } func NewMockTimer(d TickerDuration) *MockTicker { return &MockTicker{} } type MockTicker struct{} func (t *MockTicker) C() <-chan time.Time { } func (t *MockTicker) Stop() { } func (t *MockTicker) Reset(d time.Duration) { }