[RAILS] Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave

introduction

Je suis un débutant Ruby qui crée des portefeuilles avec Ruby on Rails. Je pense que de nombreuses personnes ont implémenté la fonction de téléchargement d'images dans CarrierWave. Je suis également l'un d'entre eux. Cette gemme est utilisée pour les paramètres de l'avatar de l'utilisateur et la pièce jointe d'image au moment de la publication, et la fonction de téléchargement d'image de CarrierWave a été incluse pour confirmation dans divers tests.

Lors de la création du portfolio, après avoir exécuté le test plusieurs fois, quand je suis arrivé à regarder le dossier où les images sont enregistrées ... ** 600 dossiers! ?? ** **

Je ne l'ai pas remarqué du tout. Plus vous tournez le test, plus les images incluses dans le scénario de test seront téléchargées encore et encore. Avant de le savoir, mon dossier était serré avec une capacité d'image ...

Vous pouvez le désactiver manuellement, mais le test s'exécute chaque fois que vous refactorisez ou ajoutez une fonctionnalité, ce qui peut être assez ennuyeux. Donc, ** je vais le configurer pour effacer l'image de CarrierWave créée pour le test ** après avoir exécuté le test.

environnement

Je développe des rails en créant un conteneur dans Docker.

Docker for mac 2.3.0.4
Ruby on Rails 5.2.2
ruby 2.4.5
CarrierWave 2.1.0

La réponse est sur le Wiki CarrierWave

Je me suis référé à la page suivante du wiki de CarrierWave How to: Cleanup after your Rspec tests

Tout en vous référant à cela, supprimez-le selon le flux suivant. ** 1. Spécifiez le dossier de téléchargement pour le test (fichier uploeader) ** ** 2. Effacez tous les dossiers avec le chemin spécifié après avoir exécuté le test rspec **

** 1. Spécifiez le dossier de téléchargement pendant le test ** Étant donné que certains fichiers de cache sont également générés (pendant le cas de test de vérification des erreurs) Spécifiez les dossiers de cache et de stockage.

app/uploaders/***_uploader.rb



:
  #Spécifiez un dossier dans le cache
  def cache_dir
    if Rails.env.test?
      "uploads/#{Rails.env}/tmp/#{mounted_as}/#{model.id}"
    else
      "uploads/tmp/#{mounted_as}/#{model.id}"
    end
  end

 #Spécifiez le dossier du magasin
  def store_dir
    if Rails.env.test?
      "uploads/#{Rails.env}/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    else
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
  end
:

** 2. Effacez tous les dossiers avec le chemin spécifié après avoir exécuté le test rspec ** Écrivez un chemin pour supprimer le cache et stocker le dossier spécifié ci-dessus à la fois.

spec/spec_helper.rb


:
  config.after(:all) do
    if Rails.env.test?
      FileUtils.rm_rf(Dir["#{Rails.root}/public/uploads/#{Rails.env}/"])
    end
  end
:

Cela supprimera automatiquement le dossier de test à chaque fois que vous exécuterez le test rspec.

en conclusion

J'ai exécuté le test plusieurs fois et maintenant je n'ai pas beaucoup de dossiers ou d'espace restreint, Impression que la vitesse de traitement de rspec a un peu ralenti car le processus d'effacement est entré dans le test. Cela ne peut pas être aidé, mais c'est une bonne idée de dire si vous avez vraiment besoin de télécharger des images pendant les tests, et sinon, envisagez de créer des usines sans images. Je voudrais également passer en revue les cas de test.

Recommended Posts

Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave
Téléchargement d'images à l'aide de CarrierWave ~ Test Rspec ~
Comment recadrer une image avec libGDX
Comment tester l'étendue privée avec JUnit
[Java] Comment tester s'il est nul dans JUnit
Comment tester les interruptions pendant Thread.sleep avec JUnit
Comment donner votre image à quelqu'un avec Docker
Comment rediriger après la connexion de l'utilisateur avec Spring-security
[Rails] Test avec RSpec
Testez Nokogiri avec Rspec.
Comment faire un test unitaire avec JVM sur une source à l'aide de RxAndroid
[Rails] Comment gérer les modifications d'URL après le rendu
[RSpec] Comment tester les messages d'erreur définis indépendamment par Shoulda-Matchers
Comment exécuter uniquement des fichiers spécifiques avec le test de rake de gem
Tester Active Strage avec RSpec
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Tester le résolveur GraphQL avec rspec
Comment gérer l'événement où Committee :: InvalidRequest se produit en comité pendant le test de téléchargement de fichier Rspec
[Rails / RSpec] Comment traiter l'élément a une erreur de taille nulle
[R Spec on Rails] Comment écrire du code de test pour les débutants par les débutants
Comment faire un test unitaire de Spring AOP
Comment démarrer avec Slim
Comment entourer n'importe quel caractère avec "~"
Comment utiliser mssql-tools avec Alpine
Copier et coller le test avec RSpec
[rails] Faisons un test unitaire avec Rspec!
Comment démarrer Camunda avec Docker
Comment tester une méthode privée qui prend un tableau ou un argument de longueur variable dans JUnit
Comment ajuster TextPosition avec l'extension de clavier iOS
Comment partager des fichiers avec Docker Toolbox
Comment compiler Java avec VsCode & Ant
[Ruby on Rails] Afficher le test avec RSpec
[Rails] Comment télécharger des images à l'aide de Carrierwave
[Java] Résumez comment comparer avec la méthode equals
Comment filtrer JUnit Test dans Gradle
Comment brouiller l'image (super facile)
[Android] Comment gérer les thèmes sombres
Comment utiliser BootStrap avec Play Framework
Comment changer d'images miniatures avec JavaScript
Comment faire un contrôle basé sur l'API avec cancancan
[Ruby on Rails] Test du contrôleur avec RSpec
Comment réaliser le téléchargement de fichiers avec Feign
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment implémenter TextInputLayout avec la fonction de validation
Comment gérer les erreurs de connexion avec l'appareil