Est-il un concombre crochet à exécuter avant et après chaque fonctionnalité
Est-il un moyen pour exécuter spécifiques bloc de code avant et après chaque concombre fonctionnalité avec certains tag?
Depuis le processus d'installation est très coûteux je ne veux pas l'exécuter avant chaque scénario.
Alors que tout le monde a répondu comment mettre en place une "BeforeFeature", personne ne semble avoir de réponse sur "AfterFeature", qui doit compte à rebours et sans une "réflexion" pour détecter si nous sommes dans le dernier scénario d'un long métrage, je ne vois pas comment y parvenir.
OriginalL'auteur LukasMac | 2014-04-16
Vous devez vous connecter pour publier un commentaire.
LukasMac la réponse ne fonctionne pas avec la fonction @ variable.
Ande basé sur l'officiel concombre wiki page, mon exemple ci-dessous, travaillé et testé ok, avant de crochet ci-dessous ne sont exécutés qu'une seule fois par fonctionnalité:
OriginalL'auteur Gob00st
Il ya quelques jours, j'ai parlé avec Matt Wynne (l'un des principaux membres de l'équipe de concombre gem) et il m'a dit qu'il n'y a pas une telle caractéristique dans le concombre (au moment de l'écriture de cette page).
Comme une solution de contournement, il a proposé de tag ensemble de la fonctionnalité et de l'utiliser avant chaque crochet avec un drapeau de la sorte:
OriginalL'auteur LukasMac
Les crochets pour le concombre sont décrites dans cette page de wiki qui montrent l'avant et l'après crochets que vous pouvez avoir.
Prises à partir de cette page est cet exemple:
L'exemple suivant va provoquer des scénarios marqués avec @rapide à l'échec si l'exécution prend plus de temps de 0,5 secondes:
OriginalL'auteur Mike H-R
Concombre avant et après fonctionnalité crochets
Informations d'utilisation
Que ruby concombre ne vient pas fourni avec la possibilité de créer des crochets pour avant et après une, une solution ad hoc a été mis en avant.
Afin de spécifier un crochet relatives à une fonction, le nom de la méthode doit être dans le format suivant:
before_feature_[formaté nom de la fonctionnalité]
after_feature_[formaté nom de la fonctionnalité]
Où formaté le nom de la fonction est le texte à partir de la Fonctionnalité: "ligne dans le fichier mis en forme avec:
(i) tous les personnages mis en minuscule;
(ii) tous les espaces remplacés par des caractères de soulignement; et,
(iii) tous les caractères spéciaux supprimé
Dans les méthodes d'appariement de la présente convention, le code peut être spécifié comme avec le scénario crochets.
Infos techniques
Appuyant sur les solutions de LukasMac et Gob00st j'ai mis en œuvre les solutions de contournement suivantes pour mon client actuel.
Les méthodes d'aller dans un des crochets sous-répertoire appelé AAA_special_hooks, dans un special_hooks.rb fichier dans ce répertoire (le seul fichier), c'est parce que toutes les autres choses étant égales par les crochets seront exécutées dans l'ordre où ils apparaissent dans la structure de projet et de cette façon, les crochets créés ici avant d'exécuter n'importe quel scénario crochets sont spécifiées dans d'autres sous-répertoires ou dans les crochets dans le répertoire de base.
Le code dans le dessous de l'appendice est de vanille, d'aussi loin que je peux voir, il serait travailler pour n'importe qui.
L'avant crochet fonctionne sur le principe de la définition d'un indicateur global pour s'assurer que le crochet est exécuté qu'une seule fois pour une fonction (comme par LukasMac et Gob00st). Ce principe a été étendu à l'abstrait crochet pour deux raisons, d'une part de simplifier la spécification des crochets en général, et aussi d'avoir une certaine cohérence avec le croc de mise en œuvre.
Le croc est conçu pour déterminer si la fonction a été modifiée depuis le dernier scénario a été exécuté. Si donc le croc sera exécuté pour le précédent avant que quelque chose se passe dans l'actuel. Clairement la vulnérabilité pourrait être que la nouvelle fonctionnalité a en fait été commencé avant le croc s'exécute pour le précédent, mais je ne vois pas comment cela pourrait causer des problèmes. La dernière fonctionnalité cependant, ne peut pas avoir un croc de cette façon et c'est la raison pour la remise à plat de ce code dans les at_exit méthode.
Annexe - special_hooks.rb code
OriginalL'auteur emc
Se moquant de BeforeFeature/AfterFeature crochets est réalisable en marquant le premier scénario de la fonctionnalité avec une étiquette de dire @ExecuteBeforeFeature et le dernier scénario, avec étiquette de dire @ExecuteAfterFeature et puis l'écriture de l'étiquette Avant et Après les crochets comme suit:
OriginalL'auteur Neetesh Kumar Gupta
une modification de la première réponse qui fonctionne pour moi avec des guillemets simples
OriginalL'auteur Smiti