Огуречные истории с внешними зависимостями - PullRequest
1 голос
/ 28 октября 2010

Приложение, которое я создаю, использует 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 голосов
/ 10 ноября 2010
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.Конечным результатом этого может быть просто установление ожиданий того, что методы были вызваны, или операция командной строки была успешно создана, которая соответствует вашим ожиданиям для выполнения этой операции.

Это отвечает на ваш вопрос традиционным способом «Интернета», сказав: просто не делай этого, чтобы тебе не пришлось делать это.

0 голосов
/ 30 октября 2010

Я бы не использовал жестко закодированные пути к репозиториям git. Таким образом, они могут варьироваться в зависимости от окружающей среды. Как указано в сценарии, вы можете сказать:

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.

...