- 根据那里的建议,从stackoverflow转贴。
你好,Gophers的朋友们!我正在学习如何编写单元测试,但被卡住了。
我在学习如何写单元测试,但被卡住了。请不要打我,因为我是新手。我在网上搜了很多资料,但还是想不出一个合适的解决方案。
这个练习是为我写的一个函数写一个单元测试。
Filecopy(pathfrom, pathto string, limit, offset int64) 错误
简化后的函数看起来像这样
source, err := os.Open(pathfrom)
destination, err := os.Create(pathto)
buf := make([]byte, *buffersize)
for {
n, err := source.Read(buf)
if err != nil && err != io.EOF {
return err
}
if _, err := destination.Write(buf[pos:n]); err != nil {
return err
if n == 0 {
break
}
}
}
现在我必须对它进行单元测试。而且进展并不顺利。我有两种方法可以测试它。
- 为它提供一个真正的临时文件,并预设其内容,这样测试函数就知道执行后会有什么结果。应该可以,但我读到这个选项不是正确的单元测试方法,因为它涉及到FS。
- 使用假的FS。我试着测试了mapfs和afero生成的文件,但运气不好,我的函数对它不起作用(但对真实文件起作用),要么我做错了。
请告诉我如何正确地单元测试我的功能。任何帮助都会被感激。