[RAILS] So löschen Sie das Testbild, nachdem Sie den Rspec-Test mit CarrierWave ausgeführt haben

Einführung

Ich bin ein Ruby-Anfänger, der mit Ruby on Rails Portfolios erstellt. Ich denke, dass es viele Leute gibt, die die Funktion zum Hochladen von Bildern in CarrierWave implementiert haben. Ich bin auch einer von ihnen. Dieses Juwel wird zum Zeitpunkt der Veröffentlichung für Benutzer-Avatar-Einstellungen und Bildanhänge verwendet, und die Bild-Upload-Funktion von CarrierWave wurde zur Bestätigung in verschiedenen Tests aufgenommen.

Beim Erstellen des Portfolios habe ich nach mehrmaligem Ausführen des Tests zufällig den Ordner angesehen, in dem die Bilder gespeichert sind ... ** Die Anzahl der Ordner beträgt 600! ?? ** ** **

Ich habe es überhaupt nicht bemerkt. Je mehr Sie den Test drehen, desto mehr Bilder, die im Testfall enthalten sind, werden immer wieder hochgeladen. Bevor ich es wusste, war mein Ordner eng mit Bildkapazität ...

Sie können es manuell ausschalten, aber der Test wird jedes Mal ausgeführt, wenn Sie eine Funktion umgestalten oder hinzufügen, was ziemlich ärgerlich ist. Also ** werde ich es so einstellen, dass das für den Test erstellte Bild von CarrierWave ** nach dem Ausführen des Tests gelöscht wird.

Umgebung

Ich entwickle Schienen, indem ich in Docker einen Container erstelle.

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

Die Antwort ist im CarrierWave-Wiki

Ich habe auf die folgende Seite von CarrierWaves Wiki verwiesen How to: Cleanup after your Rspec tests

Löschen Sie es, während Sie sich darauf beziehen, gemäß dem folgenden Ablauf. ** 1. Geben Sie den Upload-Ordner für den Test an (Uploeader-Datei) ** ** 2. Löschen Sie alle Ordner mit dem angegebenen Pfad, nachdem Sie den rspec-Test ausgeführt haben. **

** 1. Geben Sie während des Tests den Upload-Ordner an ** Da auch einige Cache-Dateien generiert werden (während der Fehlerprüfung Testfall) Geben Sie sowohl Cache- als auch Speicherordner an.

app/uploaders/***_uploader.rb



:
  #Geben Sie einen Ordner im Cache an
  def cache_dir
    if Rails.env.test?
      "uploads/#{Rails.env}/tmp/#{mounted_as}/#{model.id}"
    else
      "uploads/tmp/#{mounted_as}/#{model.id}"
    end
  end

 #Geben Sie den Ordner des Geschäfts an
  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. Löschen Sie alle Ordner mit dem angegebenen Pfad, nachdem Sie den rspec-Test ausgeführt haben. ** Schreiben Sie einen Pfad, um den oben angegebenen Cache und Speicherordner sofort zu löschen.

spec/spec_helper.rb


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

Dadurch wird der Testordner jedes Mal automatisch gelöscht, wenn Sie den rspec-Test ausführen.

abschließend

Ich habe den Test viele Male ausgeführt und jetzt habe ich nicht viele Ordner oder engen Speicherplatz. Eindruck, dass sich die Verarbeitungsgeschwindigkeit von rspec etwas verlangsamt hat, weil der Löschvorgang in den Test eingetreten ist. Dies kann nicht geholfen werden, aber es ist eine gute Idee zu sagen, ob Sie während des Tests wirklich Bilder hochladen müssen, und wenn nicht, sollten Sie Fabriken ohne Bilder erstellen. Ich möchte auch die Testfälle überprüfen.

Recommended Posts

So löschen Sie das Testbild, nachdem Sie den Rspec-Test mit CarrierWave ausgeführt haben
Bild-Upload mit CarrierWave ~ Rspec-Test ~
So beschneiden Sie ein Bild in libGDX
So testen Sie den privaten Bereich mit JUnit
[Java] So testen Sie, ob es in JUnit null ist
So testen Sie Interrupts während Thread.sleep mit JUnit
So geben Sie jemandem Ihr Image mit Docker
So leiten Sie nach der Benutzeranmeldung mit Spring-security um
[Schienen] Test mit RSpec
Testen Sie Nokogiri mit Rspec.
So führen Sie mit RxAndroid einen Komponententest mit JVM an einer Quelle durch
[Rails] Umgang mit URL-Änderungen nach dem Rendern
[RSpec] Testen von Fehlermeldungen, die unabhängig von Shoulda-Matchers festgelegt wurden
So führen Sie mit dem Rake-Test von gem nur bestimmte Dateien aus
Testen Sie Active Strage mit RSpec
Wie man mit html.erb nummeriert (nummeriert)
So aktualisieren Sie mit activerecord-import
Testen Sie den GraphQL-Resolver mit rspec
Umgang mit dem Ereignis, dass Committee :: InvalidRequest während des Rspec-Datei-Upload-Tests im Committee auftritt
[Rails / RSpec] Der Umgang mit Elementen weist einen Größenfehler von Null auf
[R Spec on Rails] So schreiben Sie Testcode für Anfänger von Anfängern
So führen Sie einen Komponententest für Spring AOP durch
Wie fange ich mit schlank an?
Wie man ein Zeichen mit "~" einschließt
Wie man mssql-tools mit alpine benutzt
Kopieren Sie den Test und fügen Sie ihn mit RSpec ein
[Schienen] Machen wir einen Unit-Test mit Rspec!
So starten Sie Camunda mit Docker
So testen Sie eine private Methode, die ein Array- oder Argument variabler Länge in JUnit verwendet
So passen Sie TextPosition mit der iOS-Tastaturerweiterung an
So teilen Sie Dateien mit Docker Toolbox
So kompilieren Sie Java mit VsCode & Ant
[Ruby on Rails] Test mit RSpec anzeigen
[Rails] So laden Sie Bilder mit Carrierwave hoch
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
So filtern Sie den JUnit-Test in Gradle
So verwischen Sie das Bild (super einfach)
[Android] Wie man mit dunklen Themen umgeht
Verwendung von BootStrap mit Play Framework
So wechseln Sie Miniaturbilder mit JavaScript
API-basierte Steuerung mit cancancan
[Ruby on Rails] Controller-Test mit RSpec
So erreichen Sie den Dateidownload mit Feign
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
So implementieren Sie TextInputLayout mit Validierungsfunktion
So behandeln Sie Anmeldefehler mit devise