Огурец: перед крюком запустить только один раз для всех сценариев - PullRequest
9 голосов
/ 25 октября 2010

У меня есть сценарий с несколькими сценариями.Мне бы хотелось, чтобы мой крючок Before запускался только один раз, чтобы я мог загрузить объекты ActiveRecord, которые мне нужны для выполнения всех сценариев.Проблема в том, что если я использую

Before do
    # my code here
end

, это будет выполняться перед каждым сценарием.Есть ли способ запустить его один раз для всей схемы?

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Я думаю, что если вы просто создадите объекты в файле в features / support , они будут сохранены:

ImportantThing.create(:name => "USEFUL THING")

Это связано с тем, что перед каждым сценарием Cucumber запускается транзакция базы данных, а затем происходит откат к ее предыдущему состоянию, в котором должны быть загруженные объекты.

0 голосов
/ 10 марта 2013

У меня была та же проблема, когда мне нужно было создать менеджер подписчиков один раз для всех моих тестов регистрации событий. Если бы я просто использовал ловушку перед или обычный шаг (например, данный), менеджер создавался бы перед каждым сценарием.

Мое решение в конечном итоге состояло в том, чтобы использовать тег с тегом перед подключением в моем первом сценарии.

Before('@first_logging_scenario') do
  # do something useful
end

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

After('@last_logging_scenario') do
  # do something useful
end
...