如何使用go-git进行单元测试

huangapple go评论95阅读模式
英文:

How to unit test with go-git

问题

如何为使用git-go克隆存储库的代码编写单元测试?

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

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

    dir, err := os.MkdirTemp("./", "temp") //创建一个临时文件夹来克隆存储库
    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) //自定义util函数,用于解析存储库中的文件

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

   return repo

}

请提供翻译后的内容。

英文:

How do I write a unit test for my code that clones a repo using git-go

Below is a sample of the function I have created. I am cloning multiple repos and reading a particular file that is in that repo, I am unsure how to unit test this function.

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

}

答案1

得分: 3

你可以模拟git.PlainClone()函数,使其在测试中返回自定义文件。

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

英文:

You can mock the git.PlainClone() function so it returns a custom file for your tests.

Take a look into spf13's lib, that provides a filesystem mocking solution!

答案2

得分: 0

我们过去所做的是创建一个带有预定义内容的裸 git 仓库,将其放置在例如 testdata/myrepo.git 下,并在单元测试期间使用它。

将该仓库作为项目的一部分正常提交。

英文:

What we did in the past was create a bare git repository with some predefined content, put it under e.g. testdata/myrepo.git and use it during unit-testing.

Commit the repo normally as part of your project.

huangapple
  • 本文由 发表于 2022年1月13日 14:33:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/70692330.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定