我正在编写一个包装 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
最佳答案
除了包装 git 调用之外,您的应用程序是否还执行其他操作?除了调用需要测试的 git 之外,它是否使用任何逻辑?如果它只是一个包装器,那么测试您的应用程序就相当于测试 git 本身,这可能是多余的。
但如果您的应用程序带来的不仅仅是简单的 git 调用,您最好创建一个您模拟<的“git 调用”接口(interface)(或最接近的 ruby 等效接口(interface))/strong> 在你的测试中。然后,您将测试您的应用程序逻辑,一直到它必须接触实际的 git 调用。
Look here简要说明模拟和假货之间的区别。您似乎在尝试制造假货,甚至使用真实的东西。我建议研究模拟而不是伪造/ stub 。
关于ruby - 伪造一个用于测试的 git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4870672/