Ответ 1
Обычно существует 2 подхода:
Фон
Если вы хотите выполнить несколько шагов для каждого из сценариев в файле функций:
Background:
given my app has started
then enter "guest" in "user-field"
and enter "1234" in "password-field"
and press "login"
then I will see "welcome"
Scenario: Some scenario
then *** here the work specific to this scenario ***
Scenario: Some other scenario
then *** here the work specific to this scenario ***
Вызов шагов из определений шагов
Если вам нужен "блок" шагов, которые будут использоваться в разных файлах функций, или раздел "Фон" не подходит, потому что некоторые сценарии ему не нужны, затем создайте определение уровня высокого уровня, которое вызывает другие:
Given /^I have logged in$/ do
steps %Q {
given my app has started
then enter "guest" in "user-field"
and enter "1234" in "password-field"
and press "login"
then I will see "welcome"
}
end
Кроме того, в этом случае у меня возникнет соблазн не выполнять общие действия как отдельные шаги вообще, а создать одноэтапное определение: (при условии Capybara)
Given /^I have logged in$/ do
fill_in 'user-field', :with => 'guest'
fill_in 'password-field', :with => '1234'
click_button 'login'
end
Это дает немного больше значения вашим определениям шагов, а не создает последовательность взаимодействий страниц, которые необходимо мысленно проанализировать, прежде чем вы поймете: "О, этот раздел регистрирует меня".