Огурец не может найти шаги при запуске одной функции
Я только что установил cucumber в новый проект rails (впервые настраивая его с нуля), и он прекрасно работает при запуске всех тестов (bundle exec cucumber
), но не могу найти ни одного из моих шагов, когда я запускаю один файл объектов. Как я могу начать отлаживать это?
rails (3.2.13)
cucumber-rails (1.3.1)
cucumber (>= 1.2.0)
# file listing
features/
├── campaigns
│ ├── donating_campaigns.feature
│ └── viewing_campaigns.feature
├── step_definitions
│ └── campaign_steps.rb
└── support
└── env.rb
3 ответа
Он найдет файлы только того же уровня или ниже в дереве каталогов функций. Поэтому, если вы попытаетесь запустить только сценарии в features/campaigns/donating_campaigns.feature, он не сможет найти каталог step_definitions.
Вы можете использовать флаг --require, чтобы явно указать огурцу, что нужно включить, прежде чем он запустит вашу функцию. Например:
bundle exec cucumber --require features/step_definitions features/campaigns/donating_campaigns.feature
У меня была эта проблема в одном из моих проектов. Когда я сравнил файл cucumber.yml функционального проекта с проблемным, я обнаружил, что набор функциональных файлов -r features
на std_opts
а также rerun
задания. Когда я добавил это в сломанный проект, Cucumber смог найти мои определения шагов.
Вот мой успешный файл cucumber.yml:
<%
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip -r features"
%>
default: <%= std_opts %> features
wip: --tags @wip:3 --wip features
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip -r features
Престижность этого кодировщика за указание мне в правильном направлении: http://web.archive.org/web/20121026012412/http://old.thoughtsincomputation.com/posts/cucumber-step-definitions-and-autorequire-hell
Я думаю, что вы можете неправильно понять, что такое определения шагов. В features/step_definitions
это где вы определяете свои шаги. Похоже, у вас есть две функции, которые содержат сценарии, которые вы будете или написали. Запустите сценарии, и вы увидите определения шагов, которые вам нужно определить. по одному на каждую строку вашего сценария. Теперь вам нужно определить шаги в вашем campaign_steps.rb
файл с использованием Capybara. Для вымышленного примера,
Given /^a user visits the campaign page$/ do
visit campaign_path
end
When /^the user submits valid campaign information$/ do
fill_in "Email", with: @user.email
fill_in "Donation", with: @user.donation
click_button "donate"
end
Огурец приходил с web_steps.rb
это определило много шагов для вас. Однако, это было изменено и опущено в последних версиях. Надеюсь, что это поможет вам начать в правильном направлении. Придерживаться