42 votes

Comment marquer un scénario Cucumber comme étant en attente ?

Comment puis-je marquer un scénario de concombre comme étant en attente afin qu'il ne soit pas compté comme passé ?

Scenario: Guest should not see edit link
# pending implementation

Ne devrais-je pas pouvoir le marquer comme étant en attente ?

58voto

Jaime Bellmyer Points 13815

Le problème avec le tag @wip, j'ai trouvé, est qu'il ne rend pas votre suite de test jaune. Il ignore complètement les fonctionnalités wip, et vous avez tendance à oublier qu'elles existent. Mon équipe en a fait les frais lorsque des scénarios sont marqués @wip puis oubliés. J'aimerais qu'il y ait une meilleure solution. La meilleure que j'ai est d'ajouter cette étape personnalisée :

Given /^PENDING/ do
  pending
end

Plutôt que de marquer une vraie fonctionnalité comme étant en attente, je peux la mettre dans la liste avec un message, comme ceci :

Given PENDING: we need client input

Ensuite, ça se présente comme ça :

(::) pending steps (::)

features/example.feature:15:in `Given PENDING: we need client input'

L'échec interrompt la chaîne de tests, mais il n'empêche pas Cucumber de s'inquiéter des étapes non définies qui suivent dans ce même scénario. De plus, idéalement, les fonctionnalités en échec et en attente vous indiqueraient le nom du scénario qui a échoué, mais ils ne le font pas.

23voto

averell Points 2067

Une autre possibilité est le tag @wip (work in progress). Les scénarios étiquetés @wip ne seront pas exécutés par défaut, mais seulement lorsque vous le demanderez explicitement.

@wip
Scenario: New product form should have some special field
  Given I still work on this feature

De cette façon, vous pouvez exclure certains scénarios de la construction automatisée, afin qu'elle ne soit pas interrompue pendant que vous travaillez sur la fonctionnalité.

21voto

jspooner Points 3963

Ok, j'ai compris.

Les étapes Scénarios sont marquées comme étant en attente si elles ne sont pas trouvées dans un des fichiers d'étapes.

Scenario: New product form should have some special field
  Given joe is logged in as an user
  When on the new exercise page
  Then the select field should have some special field

C'est même assez gentil pour éviter l'étape suivante.

When /^on the new exercise page$/ do
  pending # express the regexp above with the code you wish you had
end

1voto

dsci Points 31

En plus de la réponse d'averell, vous pouvez exclure les balises de scénario lorsque vous exécutez cucumber.

Si @todo et @wip sont des balises que vous souhaitez utiliser pour les scénarios qui sont en cours de traitement ou simplement pour marquer les scénarios en attente, exécutez vos fonctions comme suit :

cucumber --tags ~@todo --tags ~@wip

Si vous utilisez Garde faire quelque chose comme ça :

guard 'cucumber', :notification => true, :all_on_start => true,
                      :cmd => "bundle exec cucumber", 
                      :cli => "--tags ~@todo --tags ~@wip" do
   watch(%r{^features/.+\.feature$})
   watch(%r{^features/support/.+$})  { 'features' }
   watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m|
     Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
   end
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X