web-dev-qa-db-fra.com

Comment charger un spec_helper.rb automatiquement dans RSpec 2

Lors du développement de gemmes dans Ruby, j'ai presque toujours besoin d'un fichier dans lequel je peux configurer RSpec selon mes besoins et peut-être avant cela, j'ai besoin de modules d'assistance qui devraient être disponibles dans tous mes exemples spec.

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

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

Je sais que je ne peux dire à RSpec que l'emplacement de mon spec_helper.rb si ce spec_helper.rb nécessite tous les fichiers d'exemple manuellement, mais je voudrais également éviter la maintenance supplémentaire de cette approche.

Existe-t-il une meilleure façon de réaliser cela?

51
aef

Dans RSpec 2, le /spec le dossier 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 avec lequel vous pourrez vous en sortir.

Cela signifie que vous ne pas avez 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 ajouter à votre .rspec fichier l'option: --require spec_helper, qui nécessitera ce fichier dans chaque fichier de spécification, sans l'instruction manuelle require en haut.

112
Jacob

Le --require spec_helper la ligne est automatiquement ajoutée au fichier .rspec pour RSpec 3.0 lorsque vous effectuez rspec --init.

37
Doug