Testing in Go.如何使用假文件夹结构测试文件夹结构?



我正在编写一个函数来做从源文件夹到目标文件夹的递归深度复制。虽然我的逻辑工作,我想写单元测试,以确保所有的子文件夹和文件得到正确复制。我认为使用实际的文件和文件夹不是一个好的做法,所以我想知道如何存根file包函数。
具体来说,我使用file.MatchFiles(path)来获取所提供路径中的所有文件和文件夹,然后检查它是否为目录,以递归地执行相同的操作。

什么是file包,你是指os还是path/filepath?总之,我不太明白你的目的。例如,filepath的功能已经通过包本身的测试得到了保证。您不需要为已经随测试一起发布的函数编写额外的单元测试。但无论如何,要回答您关于良好实践的问题:这些已发布的官方测试可以使用对实际文件的实际访问,所以我认为这是一种有效的方法。有道理:把你真正想测试的行为存根不是一个好主意。

因此,如果您使用filepath.WalkDir(),您可以使用FileInfo的自定义/模拟实现为WalkFunc编写单元测试。如果你正在使用另一个包,例如os,你也可以提取你的自定义逻辑,并以类似的方式测试它。如果你对最终结果仍有疑问……那么,就像在核心库中那样做,并使用真实的文件进行测试。

最新更新