ruby - 伪造一个用于测试的 git 存储库

标签 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

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

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/

相关文章:

ruby - Sinatra + Fibers + EventMachine

ruby - "Assignment Branch Condition size for index is too high"是如何工作的?

git - 我们如何正确验证 git send-email 配置设置?

c++ - 使用 Catch 在 BDD 样式测试中对多个数据进行一次测试

ruby-on-rails - 在 Controller 之间共享一些 before_filters

git - Jenkins:使用来自另一个 repo 的 jenkinsfile 构建多分支管道

git - 如何忽略 .gitignore 文件?

python - 如何正确使用单元测试(任何语言)

.net - 如何测试涉及数据库和 Exchange 服务器访问的类(class)?

ruby - 来自 CSV 文件的字符串开头的神秘前导 "empty"字符