-1

如何为使用 git-go 克隆 repo 的代码编写单元测试

下面是我创建的函数的示例。我正在克隆多个存储库并读取该存储库中的特定文件,我不确定如何对该函数进行单元测试。

func cloneRepository(repository string) (repo beans.Repo) {

    dir, err := os.MkdirTemp("./", "temp") //To create a temp folder to clone repo in
    if err != nil...
    
    _, err := git.PlainClone(dir, false, &git.CloneOptions{
               URL: repository,
               Depth: 1,
              })

    var repo beans.Repo
    if err = util.ParseYmlFile("filename.yml", &repo) // Custom util function to parse a file in the repository

    if err = os.RemoveAll(dir); err != nil{...}

   return repo

}
4

2 回答 2

1

您可以模拟该git.PlainClone()函数,以便它为您的测试返回一个自定义文件。

查看spf13 的 lib,它提供了一个文件系统模拟解决方案!

于 2022-01-13T07:03:24.913 回答
0

我们过去所做的是创建一个包含一些预定义内容的裸 git 存储库,将其放在 eg 下testdata/myrepo.git并在单元测试期间使用它。

通常将 repo 作为项目的一部分提交。

于 2022-01-13T11:36:57.810 回答