Je pense qu'il existe un moyen d'exécuter uniquement des tests avec une étiquette donnée. Quelqu'un sait-il?
Il n'est pas facile de trouver la documentation, mais vous pouvez baliser des exemples avec un hachage. Par exemple.
# spec/my_spec.rb
describe SomeContext do
it "won't run this" do
raise "never reached"
end
it "will run this", :focus => true do
1.should == 1
end
end
$ rspec --tag focus spec/my_spec.rb
Plus d'informations sur GitHub . (toute personne ayant un meilleur lien, veuillez le conseiller)
(mettre à jour)
RSpec est maintenant superbement documenté ici . Voir la section option --tag pour plus de détails.
Depuis la v2.6, ce type de balise peut être exprimé encore plus simplement en incluant l'option de configuration treat_symbols_as_metadata_keys_with_true_values
, qui vous permet de faire:
describe "Awesome feature", :awesome do
où :awesome
est traité comme s'il l'était :awesome => true
.
Consultez également cette réponse pour savoir comment configurer RSpec pour exécuter automatiquement des tests «focalisés». Cela fonctionne particulièrement bien avec Guard .
:focus
, ce qui empêche également les indésirables comme «,
binding.pry console.log», etc. de s'infiltrer dans la base de code.rspec
programme :) Parce que la doc Relish ne le fait pas.Vous pouvez exécuter tous les tests contenant une chaîne spécifique avec l' option --example (ou -e) :
J'utilise celui-là le plus.
la source
Dans votre
spec_helper.rb
:puis sur vos spécifications:
Vous pouvez également focaliser les tests avec 'fit' ou exclure avec 'xit', comme ceci:
la source
config.filter_run_when_matching
et cela pourrait fonctionner simplement en ajoutant:focus
à l'exemplevous pouvez également transmettre le numéro de ligne:
rspec spec/my_spec.rb:75
- le numéro de ligne peut pointer vers une seule spécification ou un bloc de contexte / description (exécutant toutes les spécifications de ce bloc)la source
Vous pouvez également enchaîner plusieurs numéros de ligne avec deux-points:
Production:
la source
Comme vous pouvez le préfixer avec un RSpec 2.4 (je suppose)
f
oux
àit
,specify
,describe
etcontext
:http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#fit-class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#xit-class_method
Assurez-vous d'avoir
config.filter_run focus: true
etconfig.run_all_when_everything_filtered = true
dans votre fichierspec_helper.rb
.la source
Dans les nouvelles versions de RSpec, il est encore plus facile de configurer la prise en charge
fit
:Voir:
https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
la source
Vous pouvez également exécuter des spécifications qui ont
focus: true
par défautspec / spec_helper.rb
Alors lancez simplement
et seul le test ciblé sera exécuté
puis lorsque vous supprimez
focus: true
tous les tests, exécutez à nouveauPlus d'informations: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
la source
spec/spec_helper.rb
toujours inclus? Ou seulement si aucune option n'est donnée? Pourquoi les modules de test ontrequire 'spec_helber'
-ils et le code ci-dessus n'élimine-t-il pas la possibilité d'exécuter un seul test en spécifiant le fichier? Je ne trouve aucune documentation à ce sujet.spec_helper.rb
est toujours inclus si vous avez--require spec_helper
dans.rspec
la racine du projet.Vous pouvez courir en tant que
rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.la source