rake выполняет все мои тесты Cucumber нормально, но у огурца нет шагов

Я унаследовал приложение Rails (3) и пытаюсь разобраться с существующими тестами Cucumber. У меня есть следующие настройки в папке 'features' приложения (я пропустил все файлы, которые не имеют отношения к делу, например, дополнительные функции и шаги)

/features
  /people
    new-person.feature
  /step_definitions
    people_steps.rb
    web_steps.rb
  /support
    env.rb
    paths.rb
    selectors.rb

Если я запустил rake, он запустит все функции в features / people / new-person.feature, правильно используя шаги, перечисленные в step_definitions.

Однако я не хочу запускать грабли каждый раз, так как это занимает слишком много времени, я просто хочу запустить определенный тест в Cucumber, например. cucumber features/people/new-person.feature -l 8

Когда я это делаю, он запускает функцию, но не загружает шаги. Я получаю это обратно:

Using the default profile...
Feature: Add a new person
  In order to allocate tasks to people
  As a community manager
  I want to add a new person

  Scenario: Secondary navigation should contain "Add new person" # features/people/new-person.feature:8
    Given I am on the new person page                            # features/people/new-person.feature:9
      Undefined step: "I am on the new person page" (Cucumber::Undefined)
      features/people/new-person.feature:9:in `Given I am on the new person page'
    Then I should not see "Add new person"                       # features/people/new-person.feature:10
      Undefined step: "I should not see "Add new person"" (Cucumber::Undefined)
      features/people/new-person.feature:10:in `Then I should not see "Add new person"'

1 scenario (1 undefined)
2 steps (2 undefined)
0m0.005s

You can implement step definitions for undefined steps with these snippets:

Given /^I am on the new person page$/ do
  pending # express the regexp above with the code you wish you had
end

Then /^I should not see "([^"]*)"$/ do |arg1|
  pending # express the regexp above with the code you wish you had
end

If you want snippets in a different programming language, just make sure a file
with the appropriate file extension exists where cucumber looks for step definitions.

Почему Cucumber не загружает шаги? Я предполагаю, что мне где-то нужны шаги, но я не могу понять, где.

Спасибо Макс


person Max Williams    schedule 07.06.2011    source источник
comment
Ради аргумента переместите файл функции на один каталог вверх. У меня нет никаких требований в моих различных файлах .feature, и я не видел никаких настроек конфигурации в features / support / files, которые, казалось, указывали на это. Вы уверены, что ваш код people_steps.rb работает? Вы уже принесли курицу в жертву?   -  person jaydel    schedule 07.06.2011
comment
@jaydel - все работает нормально, когда я запускаю его просто rake, т.е. все шаги загружаются нормально. Я хотел бы продолжить разделение моих функций только ради их организации в разумные группы.   -  person Max Williams    schedule 07.06.2011
comment
@jaydel - но перемещение файлов функций в папку основных функций действительно устранило проблему ... Должно быть где-то требование, что мне нужно добавить дополнительный ../ я полагаю.   -  person Max Williams    schedule 07.06.2011
comment
ах, отлично. хорошая вещь. спасибо, что вернули его нам :)   -  person jaydel    schedule 07.06.2011
comment
Опубликуйте свое решение в качестве ответа и примите его через два дня. Таким образом, он будет правильно отображаться в соответствии с ответами в списках вопросов и результатах поиска.   -  person hammar    schedule 07.06.2011


Ответы (2)


Макс Вильямс нашел ответ на свой вопрос:

РЕДАКТИРОВАТЬ - нашел ответ здесь: https://rspec.lighthouseapp.com/projects/16211/tickets/401-envrb-not-loaded-when-running-individual-features-in-sub-directories

В config / cucumber.yml есть строка, которая выглядит так:

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"

измените это на

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip --require features/"

Это похоже на добавление --require features/ в конец вашего тестового прогона огурца и заставляет его загружать все правильно.

person Sebastien Plisson    schedule 08.06.2011
comment
@Max, вы должны принять этот ответ. - person nessur; 14.07.2011
comment
кроме того, если вы не хотите добавлять параметры по умолчанию, вы можете просто добавить -r features/ к огурцу при его запуске. - person nessur; 14.07.2011

По какой-то причине у меня еще не было файла cucumber.yml, который нужно было изменить. Итак, просто создайте пустой файл /config/cucumber.yml и поместите в него строку:

std_opts = "--format # {ENV ['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~ @ wip --require features /"

не работал. (Это не удивительно, я подумал, что это должно быть нечто большее, чем одна эта строчка.)

Я нашел здесь хороший пример ПОЛНОГО, рабочего файла cucumber.yml: http://jdfrens.blogspot.com/2010/03/uh-yes-i-did-define-that-cucumber-step.html

person Gayle    schedule 06.01.2012