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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top