2010-10-24 2 views
9

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

Before do 
    # my code here 
end 

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

ответ

3

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

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

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

0

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

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

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

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

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