Мы реализовали это так:
В Cucumber сценарий «фона» выполняется перед каждым «сценарием» в файле объектов. Итак, в верхней части каждого файла функций (в «фоне») мы настраиваем пользователя и назначаем ему роль администратора.
Теперь это дает вам пользователя-администратора, готового и доступного в каждом «сценарии».
Обратите внимание, что этот пользователь-администратор не выживет в БД от функции к функции, поскольку Cucumber обрабатывает записи в транзакциях. Таким образом, если вам нужно добавить что-то этому администратору в одной функции и использовать это из другой функции, этот способ сделать невозможно. Но, как я понял ваш вопрос, вы просто хотите убедиться, что вы не будете пытаться создать пользователя с правами администратора, если он уже создан. Создание пользователя-администратора в фоновом режиме гарантирует, что он создается только один раз для каждой функции.
Обратите внимание, что вместо этого вы можете создать пользователя-администратора в каждом «сценарии». Cucumber удалит его из базы данных в конце «сценария», поэтому в любой момент у вас также будет только один пользователь-администратор. Это, однако, не СУХОЙ и не должно быть сделано (если только вам не нужен пользователь-администратор в некоторых «сценариях», и, в частности, вы не должны присутствовать в других «сценариях»).
Пример 'фона' огурца с использованием определения шага FactoryGirl:
Background:
Given the following user exists:
| Name | Role |
| Admin | Administrator |
Заводское определение:
factory :user do
name 'John Doe'
role 'Guest'
end