我有一个结构
Artifact
以及以下两个重要功能:
type Artifact struct {
Name string
ZipFile io.ReadWriter
}
func New(name string, files []string, zipArchiveStream io.ReadWriter) *Artifact {}
func (a *Artifact) Upload() error {}
所以问题是:在通过之前
io.ReadWriter
我用的是文件名。我需要对zip文件执行三个操作:
-
添加必要的文件(即写入)
-
重新读取它以计算SHA256和(即seek,read)
-
上传到S3存储桶(即seek、read)
以前,当使用文件名时,每次操作我都会打开、关闭、重新打开等。然而,我开始编写单元测试,我意识到我的代码并不是真的
可测试的
所以我决定用
IO.读写器
所以我可以在实际代码使用中打开文件,并在测试中传递缓冲区。
现在的问题是,在读取流之后,需要重置其内部指针,以便执行第二次读取(即计算校验和,然后上载),但就我已读取的内容而言,流不能重新连接。我该如何处理这个问题?因为我现在的方法在概念上似乎有些错误。