Comment exécutez-vous un seul fichier de test / spécification dans RSpec?

Je veux pouvoir exécuter les tests d’un seul fichier de spécifications, par exemple pour le fichier que je modifie. rake spec exécute toutes les spécifications. Mon projet n’est pas un projet Rails, donc les rake spec:doc ne fonctionne pas.

Je ne sais pas si cela compte, mais voici ma structure de répertoires.

 ./Rakefile
 ./lib
 ./lib/cushion.rb
 ./lib/cushion
 ./lib/cushion/doc.rb
 ./lib/cushion/db.rb
 ./spec
 ./spec/spec.opts
 ./spec/spec_helper.rb
 ./spec/db_spec.rb

Ou vous pouvez ignorer rake et utiliser la commande ‘rspec’:

 rspec path/to/spec/file.rb 

Dans votre cas, je pense que tant que votre fichier ./spec/db_spec.rb inclut les aides appropriées, cela devrait fonctionner correctement.

Si vous utilisez une ancienne version de rspec, c’est:

 spec path/to/spec/file.rb 

L’invocation brute:

 rake spec SPEC = spec / controllers / sessions_controller_spec.rb \
           SPEC_OPTS = "- e \" devrait se connecter avec cookie \ ""

Maintenant, découvrez comment intégrer cela dans votre éditeur.

Cette question est ancienne, mais elle apparaît en haut de Google lorsque vous recherchez comment exécuter un seul test. Je ne sais pas si c’est un ajout récent, mais pour exécuter un seul test à partir d’une spécification, vous pouvez effectuer les opérations suivantes:

 rspec path/to/spec: 

où -line number- est un numéro de ligne qui contient une partie de votre test. Par exemple, si vous aviez une spécification comme:

 1: 2: it "should be awesome" do 3: foo = 3 4: foo.should eq(3) 5: end 6: 

Disons que c’est enregistré dans spec / models / foo_spec.rb. Ensuite, vous courriez:

 rspec spec/models/foo_spec.rb:2 

et ça ne ferait que passer à l’une de ces spécifications. En fait, ce nombre pourrait être compris entre 2 et 5.

J’espère que cela t’aides!

Vous pouvez également utiliser le texte réel du cas de test * e * xample avec -e !

Donc pour:

 it "shows the plane arrival time" 

vous pouvez utiliser

 rspec path/to/spec/file.rb -e 'shows the plane arrival time' ./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time' 

pas besoin de rake ici.

from help (spec -h):

 -l, --line LINE_NUMBER Execute example group or example at given line. (does not work for dynamically generated examples) 

Exemple: spec spec / runner_spec.rb -l 162

Si vous avez installé rspec en tant que plug-in plutôt qu’en tant que gem, alors vous n’aurez pas l’exécutable spec .

En tout cas, il suffit de lancer le fichier en utilisant ruby. Le code rspec est assez intelligent pour exécuter les tests pour vous.

par exemple:

 ruby myclass_spec.rb 

http://github.com/grosser/single_test vous permet de faire des choses comme ..

 rake spec:user #run spec/model/user_spec.rb (searches for user*_spec.rb) rake test:users_c #run test/functional/users_controller_test.rb rake spec:user:token #run the first spec in user_spec.rb that matches /token/ rake test:user:token #run all tests in user_test.rb that match /token/ rake test:last rake spec:last 

Ruby 1.9.2 et Rails 3 permettent d’exécuter facilement un fichier de spécifications:

   ruby -I spec spec / models / user_spec.rb

Explication:

  • commande ruby tendance à être plus rapide que la commande rake
  • -I spec signifie “inclure le répertoire ‘spec’ lors de la recherche de fichiers”
  • spec/models/user_spec.rb est le fichier que nous voulons exécuter.

J’avais du mal à faire fonctionner l’un de ces exemples, peut-être parce que le message est ancien et que les commandes ont changé.

Après quelques recherches, j’ai trouvé cela fonctionne:

Spécification rspec / models / user_spec.rb

Cela exécutera uniquement le fichier unique et fournira une sortie utile dans le terminal.

specky.vim

Pour exécuter tous vos fichiers rspec : rspec

note: vous devez être à la racine de votre projet

Pour exécuter un fichier rspec: rspec 'path_to/spec.rb'

note: remplacez ‘path_to / spec.rb’ par votre chemin. Des guillemets facultatifs.

Pour exécuter un test rspec à partir d’un fichier: rspec 'path_to/spec.rb:7'

note:: 7 est le numéro de ligne où le test commence

Sinon, regardez l’autotest.

Si vous exécutez l’autotest dans une fenêtre de commande, le fichier de spécifications sera exécuté chaque fois que vous l’enregistrez. En outre, il sera exécuté à chaque fois que le fichier que vous spécifiez est exécuté.

Par exemple, si vous avez un fichier de spécification de modèle appelé person_spec.rb et un fichier modèle appelé person.rb, chaque fois que vous enregistrez l’un de ces fichiers à partir de votre éditeur, le fichier de spécifications sera exécuté.

Disons que vous effectuez un test pour créer todo. Vous pouvez toujours exécuter ce code de tâche spécifique en utilisant le fichier crete_spec.rb comme indiqué ci-dessous.

  rspec/spec/features/controller/spec_file_name.rb Example: Creating rspec spec/features/todos/create_spec.rb Editing rspec spec/features/todos/edit_spec.rb Deleting rspec spec/features/todos/destroy_spec.rb 

Si vous souhaitez exécuter toutes les spécifications en un seul court.

  rspec 

Si vous souhaitez exécuter toutes les spécifications d’un utilisateur de contrôleur spécifique, procédez comme suit.

  rspec/spec/feaures/controller_name Example: rspec/spec/features/todos 

J’espère que cela vous donne plus de compréhension!

Bien que beaucoup de bonnes réponses aient été écrites à cette question, aucune n’utilise l’approche des tags Rspec .

J’utilise des balises pour exécuter une ou plusieurs spécifications dans différents fichiers – uniquement celles liées à ma tâche de développement en cours.

Par exemple, j’ajoute la balise “dev” avec la valeur “current”:

 it "creates an user", dev: :current do user = create(:user) expect(user.persisted?).to be_truthy end 

alors je cours

 bundle exec rspec . --tag dev:current 

Différentes balises / valeurs peuvent être définies dans des spécifications ou des groupes individuels.