Comment charger un spec_helper.rb automatiquement dans RSpec 2

Lors du développement de gems dans Ruby, j’ai presque toujours besoin d’un fichier dans lequel je peux configurer RSpec selon mes besoins et, peut-être, avant de le faire, j’ai besoin de modules d’aide disponibles dans tous mes exemples.

Dans les applications Rails, un fichier nommé spec/spec_helper.rb est utilisé pour cela. Une chose qui m’agace, c’est que dans l’environnement Rails typique, vous devez exiger ce fichier spec_helper.rb dans chaque fichier contenant des exemples pour qu’il soit chargé. Dans le passé, j’avais beaucoup de problèmes avec la modification des chemins de chargement et des chemins d’access requirejs dans les fichiers d’exemple.

Maintenant, pour mes joyaux, je souhaiterais avoir un moyen de dire simplement RSpec pour exiger le fichier spec_helper.rb avant de charger n’importe lequel des fichiers d’exemples. Indépendamment du fait que j’appelle l’exécutable rspec ou la tâche de spécification de rake que je peux définir dans mon fichier Rakefile.

Je sais que je ne peux dire à RSpec que l’emplacement de mon spec_helper.rb est que spec_helper.rb requirejs tous les exemples de fichiers manuellement, mais je voudrais aussi éviter la maintenance supplémentaire de cette approche.

Y a-t-il une meilleure façon d’accomplir cela?

Dans RSpec 2, le dossier /spec est toujours automatiquement sur votre chemin de chargement. Cela signifie que tout ce dont vous avez besoin est:

 require 'spec_helper' 

en haut de vos fichiers de spécifications. Cela chargera toujours /spec/spec_helper.rb , et c’est le minimum que vous pourrez obtenir.

Cela signifie que vous n’avez pas besoin d’une approche horrible telle que:

 require File.join(File.dirname(File.dirname(__FILE__)), 'spec_helper.rb') 

(qui doit être mis à jour pour différents niveaux d’imbrication).

Vous pouvez également append à votre fichier .rspec l’option: --require spec_helper , qui nécessitera ce fichier dans chaque fichier de spécifications, sans que l’instruction manuelle ne --require spec_helper haut.

La ligne --require spec_helper est automatiquement ajoutée au fichier .rspec pour RSpec 3.0 lorsque vous faites rspec --init .