[RUBY] Testen des Einschlusses von Bildern bei Verwendung von ActiveStorage und Faker

【Überblick】

1. Schlussfolgerung </ b>

2. Warum fixture_file_upload verwenden, anstatt mit Faker </ b> ein Image zu erstellen?

3. Verwendung von </ b>

4. Was ich hier gelernt habe </ b>

  1. Fazit

Verwenden Sie die Methode fixture_file_upload </ b>.


2. Warum sollten Sie fixture_file_upload verwenden, anstatt mit Faker ein Image zu erstellen?

Es gibt einen Grund.

Da ActiveStorage verwendet wird, wird die Bildspalte nicht erstellt. Daher kann es nicht mit Faker erstellt werden (selbst wenn ein konkretes Bild eingefügt wird, kann es nicht festgelegt werden, da Spezifikationen / Fabriken keine Bildspalte haben).

Selbst wenn ich eine Bildspalte erstellte, wusste ich nicht, wie ich mit Faker zufällig Bilder generieren (aufnehmen) sollte. (In Faker on Github wurde keine solche Funktion gefunden.)


3. Verwendung

Die Antwort ist einfach, in der entsprechenden Datei in spec / models, Weisen Sie der Instanzvariablen einfach fixture_file_upload (die Image-Datei in diesem Verzeichnis) zu. (Wenn Sie ein konkretes Beispiel in Spezifikationen / Fabriken ohne Verwendung von Faker programmieren, handelt es sich um eine lokale Variable.)

spec/models


require 'rails_helper'

RSpec.describe BuyItem, type: :model do
  describe '#create' do
    before do

      @buy_item = FactoryBot.build(:buy_item)
      @buy_item.image = fixture_file_upload('app/assets/images/aiueo.png')

    end
  end
end

Es wird so sein! Ich habe kein konkretes Beispiel in Spezifikationen / Fabriken programmiert (ich verwende Faker und es gibt keine Bildspalte), daher habe ich ein geeignetes konkretes Bild direkt in die Instanzvariable eingefügt. Auf diese Weise verschwindet der Fehler "Bild kann nicht leer sein", da das Bild direkt in "@buy_item" abgelegt wird.
5. Was ich hier gelernt habe (im Fehlerfall verwendet)

Obwohl ich das ActiveStorage-Juwel verwende, habe ich im RAM-Namen ein "Image" erstellt. Außerdem wusste ich nicht, wie man mit Faker ein Bild erstellt, deshalb habe ich den Spaltennamen gelöscht. Danach kam ich aufgrund verschiedener Suchvorgänge, um das Bild der Instanzvariablen zuzuweisen, ohne mich auf Faker zu verlassen (entsprechendes Bild statt zufällig generiert), zu fixture_file_upload und wurde gespeichert!

Referenz-URL: Testdatei-Upload mit rspec-Rails

Recommended Posts