伪造一个git存储库进行测试

elm*_*lmt 3 ruby git testing rspec

我正在编写一个包含git调用的应用程序.我需要能够测试它(使用rspec),所以我正在归档一个git存储库并在测试执行时将其解压缩.

但是,这变得乏味,因为对测试存储库进行更改意味着重新打包所有内容.此外,我需要能够准确记住git存储库中包含的内容,这使得很难将测试存储库用于多个测试文件.

我正在寻找像fakefs这样的东西,也许我可以做类似以下的事情:

before :all do
  @test_repo = FakeGit::init
  @test_repo.add(file)
  @test_repo.commit(file, "Some message") ===> returns "SHA_ID"
end
Run Code Online (Sandbox Code Playgroud)

然后在我的测试代码的某处,我可以做类似的事情:

it "should point to a SHA_ID" do
  @test_repo.rev_parse("HEAD").should == "SHA_ID"
end
Run Code Online (Sandbox Code Playgroud)

Ate*_*ral 6

你的应用程序除了包装git调用之外还做了什么?除了调用需要测试的git之外,它是否采用任何逻辑?如果它只是一个包装器,那么测试你的应用程序将相当于测试git本身,这可能是多余的.

但是如果你的应用程序带来了简单的git调用以外的东西,你最好创建一个你在测试中模拟的"git call" 接口(或者最接近的ruby等价物).然后,您将测试您的应用程序逻辑,一直到它必须触及实际的git调用.

在这里查看有关模拟和假货之间区别的简明说明.你似乎试图创造一个假的,甚至使用真实的东西.我建议考虑嘲笑而不是伪造/剔除.