在受测试的API中,有一些功能和方法都可以简单地打印内容。以这两种方法为例:
func TimeTrack(start time.Time, name string) {
elapsed := time.Since(start)
log.Printf("%s took %s", name, elapsed)
}
func (tt *TimeTrackSt) PrintLaps() {
elapsed := time.Since(tt.startDT)
log.Printf("%s took %s", tt.name, elapsed)
lapsStr := ""
for _, v := range tt.laps {
lapsStr += fmt.Sprintf("\n%s:\t%s", v.name, v.dur)
}
log.Printf("Laps %s", lapsStr)
}
我的直觉是尝试创建包含这些方法的那些函数和对象的模拟。我找到了一些代码,theoretically should work。问题是他们最终重写了整个功能,改为使用模拟打印功能。我正在使用the testify
dependency,其中包含一个entire package devoted to mocks。问题在于,如果不重构或重复测试中的函数/方法,就无法使模拟的函数按模拟打印方法而不是真实的打印方法。
失败了,我尝试将打印功能更改为测试功能,然后defer
将它们还原,但是我cannot assign to log.Println
。
我该怎么办?