Как пометить сценарий огурца как ожидающий - PullRequest
42 голосов
/ 17 июня 2010

Как пометить сценарий с огурцом как ожидающий, чтобы он не считался пройденным?

Scenario: Guest should not see edit link
# pending implementation

Разве я не могу пометить как ожидающий?

Ответы [ 4 ]

58 голосов
/ 13 мая 2011

Я обнаружил, что проблема с тегом @wip заключается в том, что он не делает ваш набор тестов желтым. Он полностью игнорирует функции стирания, и вы склонны забывать, что они существуют. Это поразило мою команду в тылу, когда сценарии помечены как @wip, а затем забыты. Я бы хотел, чтобы было лучшее решение. Лучшее, что у меня есть, это добавление этого пользовательского шага:

Given /^PENDING/ do
  pending
end

Вместо того, чтобы пометить реальную функцию как ожидающую, я могу поместить это в очередь с сообщением, например так:

Given PENDING: we need client input

Тогда это выглядит так:

(::) pending steps (::)

features/example.feature:15:in `Given PENDING: we need client input'

Ожидание останавливает цепочку тестов, но не мешает огурцу ворчать о каких-то неопределенных шагах, которые следуют в том же сценарии. Кроме того, в идеале отказавшие и ожидающие функции сообщали бы вам имя сценария, который провалился, но это не так.

22 голосов
/ 28 октября 2010

Другая возможность - тег @wip (работа в процессе). Сценарии с тегом @wip не будут запускаться по умолчанию, а только при явном запросе их.

@wip
Scenario: New product form should have some special field
  Given I still work on this feature

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

21 голосов
/ 18 июня 2010

Хорошо, понял это.

Шаги сценариев помечаются как ожидающие, если они не найдены ни в одном из файлов шагов.

Scenario: New product form should have some special field
  Given joe is logged in as an user
  When on the new exercise page
  Then the select field should have some special field

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

When /^on the new exercise page$/ do
  pending # express the regexp above with the code you wish you had
end
1 голос
/ 17 декабря 2013

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

Если @todo и @wip - это теги, которые вы хотите использовать для сценариев, которые находятся в работе или просто отмечают ожидающие сценарии, запустите такие функции, как:

cucumber --tags ~@todo --tags ~@wip

Если вы используете Guard , сделайте что-то вроде этого:

guard 'cucumber', :notification => true, :all_on_start => true,
                      :cmd => "bundle exec cucumber", 
                      :cli => "--tags ~@todo --tags ~@wip" do
   watch(%r{^features/.+\.feature$})
   watch(%r{^features/support/.+$})  { 'features' }
   watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m|
     Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
   end
end
...