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 rake spec:doc
ne fonctionne pas.
Je ne sais pas si cela compte, mais voici la structure de mon répertoire.
./ Rakefile ./ lib ./ lib/coussin.rb ./ lib/coussin ./ lib/coussin/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 version plus ancienne 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 \" doit se connecter avec le cookie\""
Maintenant, essayez de savoir 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 s'il s'agit d'un ajout récent, mais pour exécuter un seul test sur une spécification, vous pouvez procéder comme suit:
rspec path/to/spec:<line number>
où -numéro de ligne- est un numéro de ligne contenant 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:
Supposons que cela soit enregistré dans spec/models/foo_spec.rb. Ensuite, vous courriez:
rspec spec/models/foo_spec.rb:2
et il serait juste exécuter cette spec. En fait, ce nombre peut aller de 2 à 5.
J'espère que cela t'aides!
Vous pouvez également utiliser le texte réel du scénario 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 ratisser 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 comme un plugin plutôt que comme un joyau, vous ne disposerez pas de l'exécutable spec
.
Quoi qu'il en soit, il vous suffit d'exécuter le fichier à l'aide de Ruby. Le code rspec est suffisamment 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écification:
Ruby -I spec/models/user_spec.rb
Explication:
Ruby
tend à ê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.Pour exécuter tous de vos fichiers rspec: rspec
note: vous devez être à la racine de votre projet
Pour exécuter n fichier rspec: rspec 'path_to/spec.rb'
note: remplacez 'path_to/spec.rb' par votre chemin. Guillemets facultatifs.
Pour exécuter n rspec test à partir d'un fichier: rspec 'path_to/spec.rb:7'
note:: 7 est le numéro de la ligne où commence le test
J'avais du mal à faire fonctionner l'un de ces exemples, peut-être parce que le message est vieux et que les commandes ont changé?
Après quelques fouilles, j'ai trouvé que ça marche:
rspec spec/models/user_spec.rb
Cela exécutera uniquement le fichier unique et fournira une sortie utile dans le terminal.
specky.vim
Vous pouvez également consulter l'autotest.
L'exécution de l'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 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 de modèle qu'il spécifie appelé person.rb, chaque fois que vous enregistrez l'un de ces fichiers à partir de votre éditeur, le fichier de spécification est exécuté.
Bien que beaucoup de bonnes réponses aient été écrites à cette question, aucune d’entre elles n’utilise l’approche Rspec tags
.
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
alors je cours
bundle exec rspec . --tag dev:current
Différentes balises/valeurs peuvent être définies dans des spécifications individuelles ou des groupes.
Disons que vous exécutez un test pour la création de tâches. Vous pouvez toujours exécuter ce code spécifique à l'aide du fichier crete_spec.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 dans 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!