2010-10-24 19 views
9

J'ai un scénario avec plusieurs scénarios. Je voudrais que mon crochet Avant ne s'exécute qu'une seule fois afin que je puisse amorcer les objets ActiveRecord dont j'ai besoin pour exécuter tous les scénarios. Le problème est si j'utiliseConcombre: Avant le hameçon, exécuter une seule fois pour tous les scénarios

Before do 
    # my code here 
end 

Ceci sera exécuté avant chaque scénario. Y a-t-il un moyen de l'exécuter une fois pour tout le contour?

Répondre

3

Je pense que si vous créez simplement les objets dans un fichier fonctionnalités/support ils seront persisté:

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

En effet, avant chaque concombre scénario démarre une transaction de base de données et rollback à sa état antérieur, qui doit contenir les objets que vous avez chargés.

0

J'ai eu le même problème, où j'avais besoin de créer un gestionnaire d'abonné une fois pour tous mes tests d'enregistrement d'événements. Si je viens d'utiliser un hook avant ou un pas régulier (par exemple un Given), le manager serait créé avant chaque scénario. Ma solution était finalement d'utiliser un crochet marqué avant de mon premier scénario.

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

Pour arrêter mon manager, j'ai utilisé une étiquette Après crochet avec mon dernier scénario

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