2010-06-17 2 views

ответ

18

Хорошо, это один из.

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

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 
20

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

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

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

+3

кажется, что @wip тег пошел (огурец 1.1.9) – froderik

+0

вы можете избежать неудачи на работе в ходе огурцов с помощью --wip flag –

55

Проблема с тегом @wip, который я нашел, заключается в том, что он не делает ваш набор тестов желтым. Он полностью игнорирует функции 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' 

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

+0

Я думаю, что я буду использовать его для своих собственных проектов. – sevenseacat

+2

У меня есть аналогичное понятие о предложении своего рода «ключевого слова» в наборе огурцов, в котором я работаю. Здесь мы можем реализовать определение шага как «Дано (/^Pending (. *) /) Do | reason | в ожидании (причина); end'. Затем вы должны написать первый шаг Охотника в сценарии как '* В ожидании ввода клиента. Это означало бы, что другие шаги будут пропущены автоматически. – erran

0

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

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

cucumber --tags [email protected] --tags [email protected]

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

guard 'cucumber', :notification => true, :all_on_start => true, 
         :cmd => "bundle exec cucumber", 
         :cli => "--tags [email protected] --tags [email protected]" 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 
Смежные вопросы