英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论