模拟要测试的git回购协议

模拟要测试的git回购协议,git,unit-testing,testing,Git,Unit Testing,Testing,为了单元测试的目的,有没有一种简单的方法来模拟git服务器/repo?我不想测试git本身,而是想测试我的代码如何与git交互 我想做点像 create git@localhost.com:myRepo.git c:/somepath copy somefile.txt c:/somepath 然后当我 git clone git@localhost.com:myRepo.git 返回c:/somepath(somefile.txt)的全部内容,无需验证。我想测试我的代码如何处理克隆,因此对

为了单元测试的目的,有没有一种简单的方法来模拟git服务器/repo?我不想测试git本身,而是想测试我的代码如何与git交互

我想做点像

create git@localhost.com:myRepo.git c:/somepath
copy somefile.txt c:/somepath
然后当我

git clone git@localhost.com:myRepo.git
返回c:/somepath(somefile.txt)的全部内容,无需验证。我想测试我的代码如何处理克隆,因此对这个git repo的所有调用都应该自动通过身份验证


我查看了git daemon,但它是在真正的git上运行的,因此我的测试代码最终不得不执行大量的repo内容管理(添加、提交、分支等),这似乎是不必要的。

您可以创建自己的脚本,该脚本存在于名为“git”的本地目录中,并模拟您想要的任何行为

看起来您可以使用JGit来实现此目的。下面是一个使用它创建可通过http连接到的空存储库的示例:


克隆不需要服务器。它将在普通目录下工作

创建一个存储库

$ git init /path/to/repo
放点东西进去

$ cd /path/to/repo
$ touch foo bar
$ git add .
$ git ci
[master (root-commit) 3c99023] Some files.
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
 create mode 100644 foo
克隆它

$ git clone /path/to/repo /path/to/clone
$ cd /path/to/clone
$ ls
.git  bar  foo
请注意,如果您推到非裸存储库,git将不喜欢它,因此您可能希望执行中间步骤,将
/path/to/repo
转换为裸存储库。最简单的方法是制作一个裸克隆,并将其用于其他所有要克隆的对象

$ git clone --bare /path/to/repo /path/to/upstream
$ git clone /path/to/upstream /path/to/clone
...use /path/to/clone as normal pushing to /path/to/upstream...
您也可以在最初创建一个裸克隆,而不预填充它。

我想我需要模拟。我希望已经有一个这样的嘲弄。。