具有外部依赖性的黄瓜故事

时间:2010-10-28 16:54:22

标签: git cucumber bdd

我正在创建的应用程序使用git来移动存储库。我正试图找到一个策略,让我实现一个步骤:

Then the commit "d786239d8sd" is pushed from "git@github.com:opsb/conference_hub" to "git@heroku.com:conference_hub_ci.git" 

鉴于命令使用与文件系统交互的git,如何以后续回滚的方式实现此步骤?

2 个答案:

答案 0 :(得分:0)

我不会使用git repos的硬编码路径。这样,它们可能因环境而异。作为场景中的给定,您可以说:

Given "a repo exists at "user@domain.com:/some/path.git"

该步骤当然会在该位置创建一个处于已知状态的git仓库。

When "something or other"
Then the commit "d786239d8sd" is pushed from "user@domain.com:/some/path" to "anotheruser@anotherplace.com:/some/path.git"

这个策略允许你仍然进行全栈测试而不试图测试Github,Heroku和git都能正常工作。

答案 1 :(得分:0)

Background:
  Given a source repository exists at "user@domain.com:/first/path.git"
  And a destination repository exists at "user@domain.com:/second/path.git"

Scenario:
  Given I have a commit, referenced with 'd786239d8sd', in the source repo
  When I execute my application in a way I only know how
  Then I expect the commit is pushed from the source repo to the destination repo

我会在大多数情况下避免测试git和你的文件系统(如果你可以在大多数测试中帮助它),因为它似乎可能会有很长的设置和拆卸时间。如果你正在与git集成,我会测试强制你的代码遵守git概述的合同。最终结果可能只是设置了对方法被调用的期望,或者成功创建了与您执行该操作的期望相匹配的命令行操作。

这以传统的“互联网”方式回答你的问题,说:不要这样做,这样你就不必撤消它。