Ich habe einen Funktionstest. In diesem Feature-Test muss ich einige Daten in der Testdatenbank laden: let!(:product1) { create(:product) }
FactoryGirl/Bot Bilddefinitionen
ich FactoryBot bin mit dem erstellen und speichern: Produkt Objekt in der Datenbank:
FactoryBot.define do
factory :product do
name 'Master Coat'
color 'black'
size 'M'
price '870'
available true
order 1
image_1 '/assets/images/test_image.jpeg'
image_2 '/assets/images/test_image.jpeg'
image_3 '/assets/images/test_image.jpeg'
image_4 '/assets/images/test_image.jpeg'
image_5 '/assets/images/test_image.jpeg'
image_6 '/assets/images/test_image.jpeg'
end
end
Und ich betreibe meine RSpec Test:
describe 'GET #detail' do
it 'should return only products with a specified name' do
visit detail_path(name: 'Master Coat')
end
end
Allerdings bekomme ich einen Fehler, weil meine Ansicht nach 1 Bilder zu erzeugen braucht, 2, etc., die in meiner realen Anwendung von AWS über eine uRL geladen wird. Aber in meinen Tests möchte ich keine Anfragen an AWS senden, da ich die Bilder nicht teste. Das geladene Bild ist nicht relevant. Ich möchte nur ein Dummy-Bild in meinem Verzeichnis app/assets/images/test_image.jpeg
haben und FaCtroyBot dieses Bild für alle Tests verwenden, aber ich habe Probleme, es zu arbeiten, weil ich den Pfad zum Bild falsch angeben und FactoryBot gibt mir einen Fehler von:
ActionView::Template::Error:
The asset "assets/images/test_image.jpeg" is not present in the asset pipeline.
Ich habe mehrere verschiedene Möglichkeiten ausprobiert, um es zum Laufen zu bringen. Was ist die richtige Methode, um die URL für meinen Bilderordner anzugeben, damit FactoryBot das Dummy-Image abrufen kann? Und ist dies der beste Weg, oder ist es ein besserer Weg?
Ich versuchte zunächst, ohne den Weg und es hat nicht funktioniert, aber jetzt fand ich heraus, dass es nicht wegen eines anderen Fehlers arbeitete. Auf jeden Fall funktioniert das wie ein Zauber und liebe wie du meine Factory mit einem Block gekürzt hast :). – Darkisa