J'ai la structure de dossier suivante:

-features
  -admin
  -desktop
  -mobile
-step definitions
-support

Je veux savoir à partir de quel dossier le scénario actuel s'exécute maintenant (admin / desktop / mobile). C'est possible? Parce que je veux ajouter une condition dans le fichier hooks pour exécuter les conditions nécessaires de différents dossiers.

1
Den Silver 17 janv. 2017 à 11:28

2 réponses

Meilleure réponse

Vous pouvez accéder aux détails sur l’emplacement du fichier de fonctionnalités à l’aide de Scenario#location méthode, qui renvoie un Cucumber::Core::Ast::Location::Precise. À partir de là, vous pouvez accéder au chemin du fichier de la fonctionnalité en utilisant #file:

scenario.location.file
#=> "features/mobile/test.feature"

Par exemple, le crochet pourrait ressembler à:

Before do |scenario|
  platform = scenario.location.file.split(File::SEPARATOR)[1].to_sym
  #=> :admin:, :desktop or :mobile

  # Output the platform (or whatever conditional logic you want)
  case platform
  when :admin then puts 'admin'
  when :desktop then puts 'desktop'
  when :mobile then puts 'mobile'
  end
end
2
Justin Ko 17 janv. 2017 à 14:34

Si vous utilisez Ruby version 2.0 et supérieure, la méthode __dir__ est votre chemin à parcourir (au cas où vous voudriez obtenir le chemin absolu):

# File: /home/xxx/folder/features/admin/test.rb puts __dir__ # => "/home/xxx/folder/features/admin"

Mais que faire si vous souhaitez uniquement connaître le nom du répertoire dans lequel se trouve le fichier? Ensuite, vous pouvez utiliser File.basename:

# File: /home/xxx/folder/features/admin/test.rb puts File.basename(__dir__) # => "admin"

0
Jakub Groncki 17 janv. 2017 à 14:25