J'ai un modèle qui obtient ses données d'un objet analyseur. Je pense que la classe parser devrait vivre dans le répertoire lib/(bien que je puisse être persuadé qu'il devrait vivre ailleurs). La question est la suivante: où mes tests unitaires pour la classe parser devraient-ils être? Et comment puis-je m'assurer qu'ils sont exécutés chaque fois que je lance un test de rake?Rails: Comment tester le code dans le répertoire lib /?
Répondre
Dans l'application Rails sur lesquels je travaille, j'ai décidé de placer simplement les essais dans le répertoire test\unit
. Je vais aussi imbriquer par le module/répertoire ainsi, par exemple:
lib/a.rb => test/unit/a_test.rb
lib/b/c.rb => test/unit/b/c_test.rb
Pour moi, ce fut le chemin de la résistance dernière, que ces tests ont couru sans devoir apporter d'autres modifications.
est ici une façon:
Créer lib/tasks/test_lib_dir.rake
avec les éléments suivants
namespace :test do
desc "Test lib source"
Rake::TestTask.new(:lib) do |t|
t.libs << "test"
t.pattern = 'test/lib/**/*_test.rb'
t.verbose = true
end
end
Mimic la structure de votre lib
dir sous la dir test
, en remplaçant le code lib avec les tests correspondants.
Run rake test:lib
pour exécuter vos tests lib.
Si vous voulez que tous les tests à exécuter lorsque vous invoquez rake test
, vous pouvez ajouter ce qui suit à votre nouveau fichier de râteau.
lib_task = Rake::Task["test:lib"]
test_task = Rake::Task[:test]
test_task.enhance { lib_task.invoke }
D'une certaine façon, il ne charge pas l'environnement (en particulier 'fixtures' d'ActiveSupport), et il n'est pas possible de le forcer dans rakefile. –
Hey, j'ai essayé votre solution et 'rake test: lib' exécute mon test, mais' rake test' ne fonctionne pas. Je l'ai copié mot pour mot. Voici un lien vers le contenu de mon dossier: http://pastebin.com/FHMXU6vG Merci d'avance! – robert
Je cherchais à faire la même chose mais avec rspec & Autospec et il a fallu creuser un peu pour comprendre exactement où ils recevaient la liste des modèles répertoires/fichiers qui dictaient quels fichiers de test à exécuter. En fin de compte, je trouve cela dans lib/tâches/rspec.rake: 86
[:models, :controllers, :views, :helpers, :lib, :integration].each do |sub|
desc "Run the code examples in spec/#{sub}"
Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
end
end
j'avais placé mes tests dans un nouveau répertoire spec/libs lorsque le fichier rpsec.rake a été configuré pour regarder dans spec/lib. Renommer simplement libs -> lib a fait l'affaire!
J'ai '/ lib' par défaut dans mon projet en quelque sorte. Malheureusement, le 'rake test' ne rattrape pas les fichiers, donc c'est RSpec seulement et je dois utiliser la solution ci-dessus. –
Pour ne pas définir les tâches de rake supplémentaires pour exécuter des tests à partir des dossiers personnalisés définis, vous pouvez également les exécuter avec la commande rake test:all
. Teste la structure des dossiers pour le dossier lib
ou tout autre dossier personnalisé est à vous. Mais je préfère les dupliquer dans les classes: lib
est adaptée à test/lib
, app/form_objects
-test/form_objects
.
Un moyen facile et propre est simplement de créer un répertoire sous test/unit/lib. Ensuite, créez un test en tant que test/unit/lib/foo_test.rb correspondant à lib/foo.rb. Aucune nouvelle tâche de rake n'est requise et vous pouvez imbriquer plus de répertoires si nécessaire pour correspondre à la structure du répertoire lib.
Utilisation:
[spring] rake test:all
pour exécuter tous les tests, y compris les répertoires créés (comme [root]/test/lib/
).
Omettre [spring]
si Tou ne l'utilisez pas.
râteau abandonné! Ne sait pas comment construire la tâche 'test: all' – Intentss
Au Rails 4.0:
rake test:all # Run all tests in any subdir of `test` without resetting the DB
rake test:all:db # Same as above and resets the DB
Au Rails 4.1, redéfinissent test:run
d'inclure des tâches supplémentaires lors de l'exécution rake
ou rake test
:
# lib/tasks/test.rake
namespace :test do
Rake::Task["run"].clear
task run: ["test:units", "test:functionals", "test:generators", "test:integration", "test:tasks"]
["tasks"].each do |name|
Rails::TestTask.new(name => "test:prepare") do |t|
t.pattern = "test/#{name}/**/*_test.rb"
end
end
end
Cela a l'avantage de définir rake test:tasks
dans l'exemple donné .
Au Rails 4.2, test:run
comprend tous les subdirs de test
les y compris lors de l'exécution rake test
, et donc rake
.
Dans Rails 5, ces différentes tâches n'existent plus. – Qqwy
- 1. Comment tester le code C
- 2. Comment puis-je faire le code dans lib/recharger automatiquement lorsque le fichier change?
- 3. tester le code fileté dans ruby
- 4. Où rspec teste-t-il le code sous lib/go?
- 5. Comment puis-je tester le code C# SmtpClient dans Vista
- 6. Comment tester si le répertoire est caché en C#?
- 7. Rails/lib modules et
- 8. Comment créer un lien vers une bibliothèque partagée sans le préfixe lib * dans un répertoire différent?
- 9. Comment afficher le code source dans le débogage lors de l'utilisation de .lib et dll
- 10. Correct façon d'optimiser le code Rails répété
- 11. Comment intégrer le concombre dans le code pour tester le ratio?
- 12. Comment tester le code qui n'est pas un modèle ou un contrôleur
- 13. Logiciel pour tester le code C#
- 14. Rails: Comment utiliser helpers dans une classe distincte dans lib
- 15. Comment tester Rails Juggernaut dans Internet Explorer?
- 16. Quel est le délai idéal pour tester le code
- 17. Comment tester les aides dans Rails?
- 18. créer le fichier .lib dans Visual Studio
- 19. Echec d'écriture de l'image dans le répertoire
- 20. La tâche java de ant ne trouve pas de jar dans le répertoire jre/lib/ext
- 21. Comment tester le drapeau EOF dans R?
- 22. Changer le répertoire dans le répertoire d'un script Python
- 23. Comment dans le code
- 24. PHP: Stocker des objets dans le répertoire lib/du module de plug-in Symfony
- 25. Tester si le code s'exécute en mode débogage
- 26. Comment synchroniser le répertoire local avec le répertoire ftp distant?
- 27. (Rails) Recharger des fichiers "lib" sans avoir à redémarrer le serveur ...?
- 28. Comment écraser le fichier enregistré dans le répertoire contextuel
- 29. php curl laisser le fichier dans le répertoire - Comment nettoyer
- 30. Comment lire le code source du projet exemple Rails?
Cela ne fonctionne plus avec Rails 5 – Qqwy