Comment exécutez-vous un seul fichier test/spec dans RSpec?
Je veux pouvoir exécuter les tests d'un seul fichier de spécification-pour le fichier que je modifie, par exemple. rake spec
exécute toutes les spécifications. Mon projet N'est pas un projet Rails, donc rake spec:doc
ne fonctionne pas.
Je ne sais pas si cela compte, mais voici ma structure de répertoire.
./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
14 réponses
Ou vous pouvez ignorer rake et utiliser la commande 'rspec':
rspec path/to/spec/file.rb
Dans votre cas, je pense aussi longtemps que votre ./spec / db_spec.fichier RB comprend les aides appropriées, il devrait fonctionner correctement.
Si vous utilisez une ancienne version de rspec il est:
spec path/to/spec/file.rb
L'invocation brute:
rake spec SPEC=spec/controllers/sessions_controller_spec.rb \ SPEC_OPTS="-e \"should log in with cookie\""
Maintenant, découvrez comment intégrer ceci dans votre éditeur.
Cette question Est ancienne, mais elle apparaît en haut de Google lors de la recherche de 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 faire ce qui suit:
rspec path/to/spec:<line number>
Où-numéro de ligne-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 qu'il est enregistré dans spec / models / foo_spec.RB. Ensuite, vous courriez:
rspec spec/models/foo_spec.rb:2
Et il suffit d'exécuter cette spécification. Dans fait, ce nombre pourrait être quelque chose de 2 à 5.
Espérons que cela aide!
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 râteau ici.
De l'aide (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 plugin plutôt qu'en tant que gem, vous n'aurez pas l'exécutable spec
.
En tout cas, tout ce que vous devez faire est d'exécuter le fichier en utilisant ruby. Rspec code 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 trucs 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 ont un moyen facile d'exécuter un fichier de spécification:
ruby -I spec spec/models/user_spec.rb
Explication:
-
La commande
ruby
a tendance à être plus rapide que la commanderake
-
-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 post est ancien et que les commandes ont changé?
Après avoir fouiné, j'ai trouvé que cela fonctionnait:
RSpec spec / models / user_spec.rb
Qui exécutera juste le fichier unique et fournit une sortie utile dans le terminal.
Pour exécuter tous les de votre rspec de fichiers: rspec
remarque: vous devez être à la racine de votre projet
Pour exécuter un rspec fichier: rspec 'path_to/spec.rb'
REMARQUE: remplacez ' path_to / spec.rb " avec votre chemin. Guillemets facultatifs.
Pour exécuter un rspec test à partir d'un fichier: rspec 'path_to/spec.rb:7'
remarque: :7 est le numéro de la ligne où le test commence
Sinon, jetez un oeil à autotest.
L'exécution d'autotest dans une fenêtre de commande signifie que le fichier de spécification sera exécuté chaque fois que vous l'enregistrez. En outre, il sera exécuté chaque fois que le fichier que vous speccing est exécuté.
Par exemple, si vous avez un fichier de spécification de modèle appelé person_spec.rb, et un fichier de modèle qu'il speccing appelé person.rb, puis chaque fois que vous enregistrez l'un de ces fichiers de votre éditeur, le fichier de spécification sera exécuté.
Disons que vous exécutez un test pour créer todo. Vous pouvez toujours exécuter ce code spécifique todo spec en utilisant le fichier crete_spec.fichier rb comme 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 voulez exécuter toutes les spécifications en un seul court.
rspec
Si vous voulez exécuter toutes les spécifications dans un utilisateur de contrôleur spécifique ceci.
rspec/spec/feaures/controller_name
Example: rspec/spec/features/todos
J'espère que cela vous donne plus de compréhension!
Bien que de nombreuses bonnes réponses aient été écrites à cette question, aucune d'entre elles n'utilise le Rspec tags
approche.
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 actuelle.
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
Puis je cours
bundle exec rspec . --tag dev:current
Différentes balises/valeurs peuvent être définies dans des spécifications individuelles ou des groupes.