Comment puis-je exécuter un seul test à partir d'une suite de tests Rails?
rake test ANYTHING
ne semble pas aider.
NOTE: Ceci n'exécute pas le test via rake
. Ainsi, tout code que vous avez dans Rakefile
NE sera PAS exécuté.
Pour exécuter un seul test, utilisez la commande suivante dans le répertoire principal de votre projet Rails:
Ruby -I test test/unit/my_model_test.rb -n test_name
Cela exécute un seul test nommé "nom", défini dans la classe MyModelTest dans le fichier spécifié. Le nom de test est formé en prenant le nom du test, en l'ajoutant au mot "test", puis en séparant les mots avec des traits de soulignement. Par exemple:
class MyModelTest < ActiveSupport::TestCase
test "valid with good attributes" do
# do whatever you do
end
test "invalid with bad attributes" do
# do whatever you do
end
end
Vous pouvez exécuter les deux tests via:
Ruby -I test test/unit/my_model_test.rb
et juste le deuxième test via
Ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes
Exécutez un fichier test :
rake test TEST=tests/functional/accounts_test.rb
Exécutez un single test dans un fichier de test:
rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"
(Du commentaire de @Puhlze.)
Pour Rails 5:
Rails test test/models/my_model.rb
Grâce à @James, la réponse semble être:
Rails test test/models/my_model.rb:22
En supposant que 22 est le numéro de ligne du test donné. Selon l'aide de Rails:
$ Rails test --help
Vous pouvez exécuter un seul test en ajoutant un numéro de ligne à un nom de fichier:
bin/Rails test test/models/user_test.rb:27
Notez également que votre test doit hériter de ActionDispatch :: IntegrationTest pour que cela fonctionne (c'est mon erreur):
class NexApiTest < ActionDispatch::IntegrationTest
.
.
.
Dans Rails 5,
J'ai utilisé cette méthode pour exécuter un seul fichier de test (tous les tests dans un fichier)
Rails test -n /TopicsControllerTest/ -v
regardez ici https://stackoverflow.com/a/41183694/3626659
Pour exécuter un seul test dans la suite Rails actuelle:
bundle exec Ruby -I"railties/test" actionpack/test/template/form_options_helper_test.rb
C'était une question idiote de ma part à minuit. Rails affiche gentiment la commande qu'il exécute sur rake test
. Le reste est un exercice de copier/coller.
~/projects/Rails/actionpack (my2.3.4)$ Ruby -I"lib:test" "/usr/lib/Ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"
Si vous souhaitez exécuter un seul test, vous pouvez simplement les exécuter en tant que script Ruby standard.
Ruby actionmailer/test/mail_layout_test.rb
Vous pouvez également exécuter une suite complète (par exemple, ActiveRecord ou ActionMailer) en cd
- dans le répertoire et en y exécutant rake test
.
Le meilleur moyen consiste à consulter directement les guides: http://guides.rubyonrails.org/contributing_to_Ruby_on_Rails.html#running-tests
cd actionmailer
bundle exec Ruby -w -Itest test/mail_layout_test.rb -n test_explicit_class_layout
Tout d’abord, accédez au dossier de la bibliothèque que vous voulez tester (c’est important), puis lancez:
~/Projects/Rails/actionview (master)$ Ruby -I test test/template/number_helper_test.rb
Dans ma situation pour rake
ne fonctionne que TESTOPTS="-n='/sample/'"
:
bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/sample/'"