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>
Verwenden Sie die Methode fixture_file_upload </ b>.
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.)
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
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