Испытания генераторов с огурцом и арубой

Я только что выпустил гем на github и написал тест интеграции с гемом aruba. Однако я не могу запустить функции, потому что он ведет себя не так, как командная строка.

Если я запускаю функции, рельсы не могут найти мой генератор, если я повторяю те же шаги в командной строке, они работают без нареканий.

Это неудачная функция

Background: A new rails application has been created with my gem
  Given a rails application named "my_app" exists
  And this gem is installed in that application

@announce
Scenario: Installation using default values
  When I successfully run `rails generate google_authentication:install`
  # this is needed because rails g returns 0 when can't find the generator
  And the output should not contain "Could not find generator"

И это код, который реализует фоновые шаги

Given /^a rails application named "([^\"]*)" exists$/ do |app_name|
  @app_name = app_name
  Given "I successfully run `rm -rf #{app_name}`" # added to ensure that the working directory is clean
  And "a directory named \"#{app_name}\" should not exist"
  And "I successfully run `rails new #{app_name}`"
  And "I cd to \"#{app_name}\""
end

When /^this gem is installed in that application$/ do
  gempath = File.expand_path('../../../', __FILE__)
  Given "I append to \"Gemfile\" with \"gem 'gem-name', :path => '#{gempath}'\""
  And "I successfully run `bundle check`"
end

Я попытался отладить, и я обнаружил, что если я изменю bundle check команда с bundle install и я получаю вывод, мой драгоценный камень не указан в комплекте. Как следствие, если я напишу rails g --help шаг мой генератор не там. Как бы то ни было, есть gem и генераторы devise (devise указан как требование в моем gem. Поэтому кажется, что bundler / rails не загружает все внутри шагов aruba.

Я думаю, что это ошибка с Арубой или Бундлером, я открыл проблему для Арубы, но до сих пор нет ответов.

Полный код на Github

Последнее, что я уже видел и попробовал это решение, но безуспешно

1 ответ

Вместо всех тех шагов, которые вы написали, которые немного устарели в огурце.

Попробуйте что-то вроде этого:

Given /^a rails application named "([^\"]*)" exists$/ do |app_name|
  FileUtils.mkdir_p("tmp")
  system("rm -rf tmp/#{app_name}")
  system("rails new tmp/#{app_name}")
  system("ln -s ../../../lib/generators tmp/#{app_name}/lib")
  @current_directory = File.expand_path("tmp/#{app_name}")
end

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

Другие вопросы по тегам