Ich habe nach dieser Frage gesucht und konnte sie oder ihre Antwort auf Stack Overflow nicht finden, habe sie aber an anderer Stelle gefunden. Deshalb bitte ich sie, sie auf SO verfügbar zu machen.
Das Rails-Framework verfügt über eine Funktion fixture_file_upload
( Rails 2 Rails 3 , Rails 5 ), die Ihr Fixtures-Verzeichnis nach der angegebenen Datei durchsucht und diese als Testdatei für den Controller beim Funktionstest zur Verfügung stellt. Um es zu benutzen:
1) Fügen Sie Ihre hochzuladende Datei zum Testen in das Unterverzeichnis Ihrer Geräte / Dateien zum Testen ein.
2) In Ihrem Unit-Test können Sie Ihre Testdatei abrufen, indem Sie fixture_file_upload ('path', 'mime-type') aufrufen.
z.B:
bulk_json = fixture_file_upload('files/bulk_bookmark.json','application/json')
3) Rufen Sie die post-Methode auf, um die gewünschte Controller-Aktion auszuführen, und übergeben Sie das von fixture_file_upload zurückgegebene Objekt als Parameter für den Upload.
z.B:
post :bookmark, :bulkfile => bulk_json
Oder in Rails 5: post :bookmark, params: {bulkfile: bulk_json}
Dies durchläuft den simulierten Post-Prozess mit einer Tempfile-Kopie der Datei in Ihrem Fixtures-Verzeichnis und kehrt dann zu Ihrem Komponententest zurück, damit Sie mit der Prüfung der Ergebnisse des Posts beginnen können.