Испытания генераторов с огурцом и арубой
Я только что выпустил гем на 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
Вы должны создать ссылку на каталоги. Это имеет больше смысла, чем установка комплекта, которую не следует пытаться протестировать с помощью огурца.