我正在编写一个包含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
然后在我的测试代码的某处,我可以做类似的事情:
it "should point to a SHA_ID" do
@test_repo.rev_parse("HEAD").should == "SHA_ID"
end
答案 0 :(得分:5)
你的应用程序除了包装git调用之外还做了什么吗?除了调用需要测试的git之外,它是否采用任何逻辑?如果它只是一个包装器,那么测试你的应用程序将相当于测试git本身,这可能是多余的。
但是如果你的应用程序带来了简单的git调用之外的东西,你最好创建一个“git call”接口(或者最接近的ruby等价物) mock < / strong>在你的测试中。然后,您将测试应用程序逻辑,一直到必须触摸实际的git调用。
Look here简要介绍了模拟和假货之间的区别。你似乎试图创造一个假的,甚至使用真实的东西。我建议考虑嘲笑而不是伪造/剔除。