2011-02-02 47 views
3

我正在编写一个包装git调用的应用程序。我需要能够测试它(使用rspec),所以我正在归档一个git存储库并在测试执行时提取它。伪造git仓库进行测试

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

我在寻找类似fakefs在那里,也许我可以做类似如下:

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

然后在我的测试代码的地方,我可以这样做:

it "should point to a SHA_ID" do 
    @test_repo.rev_parse("HEAD").should == "SHA_ID" 
end 
+2

假设你真的需要这样做,最简单的方法不是简单地存储创建测试回购的脚本,而不是测试回购本身? – Cascabel 2011-02-02 06:38:55

回答

5

贵应用程序除了包装git调用之外什么都不做?它是否使用超出调用git的任何逻辑需要测试?如果它只是一个包装,那么测试你的应用程序就等于测试git本身,这可能是多余的。

但是,如果你的应用程序带来的表的东西超越了简单的git的电话,你最好创建一个“混帐叫” 接口(或等效的红宝石最近的),你在你的测试模拟。然后,您将测试您的应用程序逻辑,一直到它必须触摸实际的git调用。

Look here简要说明了嘲笑和假货之间的区别。你似乎在试图制造一个假货,甚至使用真实的东西。我会建议寻找嘲弄,而不是伪造/剔除