attachment_fu test in rotaie 3
-
09-10-2019 - |
Domanda
Sto cercando di scrivere specifiche per una funzionalità di caricamento file di lavoro utilizzando attachment_fu. Tuttavia, il codice di esempio fornito dall'autore per i test mi impone di richiedere action_controller/test_process
in modo da avere accesso alla classe di ActionController::UploadedStringIO
. Ho usato questo prima in Rails 2.x, ma per le rotaie 3, non riesce a individuare il file test_process
.
Come faccio ad andare avanti con testare la funzionalità di upload di file in Rails 3?
Soluzione
sono stato in grado di utilizzare fixture_file_upload bene con Rails3 e RSpec.
Ho appena aggiunto include ActionDispatch::TestProcess
al spec_helper.rb, e poi passato qualcosa di simile a quanto segue come FILEDATA:
fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png')
EDIT: Qualcosa che ho aggiornato cambiato il comportamento di questo per includere sempre il percorso di infissi, così sono passato a questo invece di fixture_file_upload:
Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png')
Altri suggerimenti
Sto lavorando a testare il caricamento di file in Rails 3 in questo momento, anche se non so quanto utile la mia risposta sarà. Sarebbe possibile per voi per cambiare il test? Personalmente, sto usando un approccio di cetriolo / Capybara. definisce DSL di Capybara
attach_file('Image', '/path/to/image.jpg')
Personalmente questo sembra un modo migliore per prova di interagire con l'oggetto StringIO ... sentitevi liberi di replica.
Questo è stato un po 'difficile da trovare per Rails 3
È comunque possibile utilizzare la funzione fixture_file_upload
, ma bisogna aggiungere:
include ActionDispatch::TestProcess
Per il vostro caso di test.
Questo non ha funzionato affatto con Rspec. Ho appena avuto a prelevare il file stesso e inviare direttamente il file.