attachment_fu Testen in Schienen 3
-
09-10-2019 - |
Frage
Ich versuche, Spezifikationen für eine Arbeits Datei-Upload-Funktionalität zu schreiben attachment_fu verwenden. Jedoch erfordert das Beispielcode vom Autor zum Testen gegeben mich action_controller/test_process
zu verlangen, so dass ich den Zugriff auf ActionController::UploadedStringIO
Klasse. Ich dies vor in Schienen verwendet habe 2.x aber für Schienen 3, es scheitert die test_process
Datei zu suchen.
Wie kann ich voran gehen mit Prüfung der Datei-Upload-Funktionalität in Schienen 3?
Lösung
Ich konnte fixture_file_upload verwenden ganz gut mit Rails3 und rspec.
I include ActionDispatch::TestProcess
zum spec_helper.rb nur gegeben, und dann so etwas wie die folgenden als FILEDATA übergeben:
fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png')
EDIT: Etwas, das ich ein Upgrade, das Verhalten änderte sich dies immer auf die Befestigungen Pfad enthalten, so dass ich zu schaltet dies statt fixture_file_upload:
Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png')
Andere Tipps
Ich arbeite Datei-Uploads in Schienen 3 jetzt auf die Prüfung, obwohl ich weiß nicht, wie hilfreich meine Antwort sein wird. Wäre es möglich sein, dass Sie den Test ändern? Ich persönlich bin mit einer Gurke / Capybara Ansatz. Capybara DSL definiert
attach_file('Image', '/path/to/image.jpg')
Persönlich scheint dies eine bessere Art und Weise zu testen als mit dem StringIO Objekt interagiert ... zu Retorte frei fühlen.
Das war etwas schwierig für Rails zu finden 3
Sie können weiterhin die fixture_file_upload
Funktion verwenden, aber man muss hinzufügen:
include ActionDispatch::TestProcess
Um Ihren Testfall.
Das hat nicht funktioniert überhaupt mit Rspec. Ich habe gerade die Datei selbst zu packen und die Datei direkt buchen.