1. Conclusion </ b>
2. Pourquoi utiliser fixture_file_upload au lieu de créer une image avec Faker </ b>
3. Comment utiliser </ b>
4. Ce que j'ai appris d'ici </ b>
Utilisez la méthode fixture_file_upload </ b>.
Il y a une raison.
Étant donné qu'ActiveStorage est utilisé, la colonne d'image n'est pas créée. Par conséquent, il ne peut pas être créé avec Faker (même si une image concrète est insérée, elle ne peut pas être définie car spec / factories n'a pas de colonne d'image).
Même si je faisais une colonne d'images, je ne savais pas comment générer (récupérer) des images au hasard avec Faker. (Aucune fonctionnalité de ce type n'a été trouvée dans Faker sur Github.)
La réponse est simple, dans le fichier correspondant dans spec / models, Affectez simplement fixture_file_upload (le fichier image dans ce répertoire) à la variable d'instance. (Si vous programmez un exemple concret dans spec / usines sans utiliser Faker, ce sera une variable locale)
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
Même si j'utilise la gemme ActiveStorage, j'ai créé "image" dans le nom de la RAM. De plus, je ne savais pas comment créer une image avec Faker, j'ai donc supprimé le nom de la colonne. Après cela, à la suite de diverses recherches pour attribuer l'image à la variable d'instance sans compter sur Faker (image appropriée au lieu de générée aléatoirement), je suis arrivé à fixture_file_upload et j'ai été sauvé!
URL de référence: Tester le téléchargement du fichier à l'aide de rspec-rails