比较单元测试中的当前时间

Gil*_*ich 3 unit-testing go

我目前正在编写一个与字符串进行比较的单元测试。第一个字符串是使用函数生成的。另一个是硬编码的并用作参考。我的问题是,创建第一个字符串的函数将精确到秒的当前时间 (time.Now()) 注入到字符串中。目前我也做了同样的事情作为参考,但这对我来说似乎很丑陋。我的机器运行得足够快,因此测试可以通过,但我不想依赖它。

进行此类测试的一般技术是什么?

Mar*_*her 6

time.Now()您可以像在文件中一样存根函数_test.go,通过该init()函数,这将给出确定的时间值:

package main

import (
    "fmt"
    "time"
)

var timeNow = time.Now

func main() {
    fmt.Println(timeNow())
}

func init() {
    // Uncomment and add to _test.go init()
    // timeNow = func() time.Time {
    //  t, _ := time.Parse("2006-01-02 15:04:05", "2017-01-20 01:02:03")
    //  return t
    // }
}
Run Code Online (Sandbox Code Playgroud)

请参阅: https: //play.golang.org/p/hI6MrQGyDA