Огурец не может найти шаги при запуске одной функции

Я только что установил 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 это определило много шагов для вас. Однако, это было изменено и опущено в последних версиях. Надеюсь, что это поможет вам начать в правильном направлении. Придерживаться

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