Подделка репозитория git для тестирования - PullRequest
3 голосов
/ 02 февраля 2011

Я пишу приложение, которое упаковывает 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

1 Ответ

5 голосов
/ 02 февраля 2011

Делает ли ваше приложение что-либо, кроме упаковки git-вызовов? Использует ли он какую-либо логику помимо вызова git, которую нужно протестировать? Если это просто оболочка, то тестирование вашего приложения будет равносильно тестированию самого git, что, вероятно, является избыточным.

Но если ваше приложение выводит на стол вещи, помимо простых git-вызовов, вам лучше создать "git call" интерфейс (или ближайший эквивалент в рубине), который вы mock в ваших тестах. Затем вы будете тестировать логику своего приложения, вплоть до того, когда оно должно касаться реальных вызовов git.

Посмотрите здесь для краткого изложения различий между подделками и подделками. Вы, кажется, пытаетесь создать подделку или даже использовать настоящую вещь. Я бы порекомендовал заняться издевательством, а не подделкой / заглушкой .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...