Testen Sie einen Dateiupload mit rspec - rails
Ich möchte zum testen eine Datei-upload in rails, bin aber nicht sicher, wie dies zu tun.
Hier ist die controller-code:
def uploadLicense
#Create the license object
@license = License.create(params[:license])
#Get Session ID
sessid = session[:session_id]
puts "\n\nSession_id:\n#{sessid}\n"
#Generate a random string
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
newpass = ""
1.upto(5) { |i| newpass << chars[rand(chars.size-1)] }
#Get the original file name
upload=params[:upload]
name = upload['datafile'].original_filename
@license.format = File.extname(name)
#calculate license ID and location
@license.location = './public/licenses/' + sessid + newpass + name
#Save the license file
#Fileupload.save(params[:upload], @license.location)
File.open(@license.location, "wb") { |f| f.write(upload['datafile'].read) }
#Set license ID
@license.license_id = sessid + newpass
#Save the license
@license.save
redirect_to :action => 'show', :id => @license.id
end
Habe ich versucht diese Skillung, aber es funktioniert nicht:
it "can upload a license and download a license" do
file = File.new(Rails.root + 'app/controllers/lic.xml')
license = HashWithIndifferentAccess.new
license[:datafile] = file
info = {:id => 4}
post :uploadLicense, {:license => info, :upload => license}
end
Wie kann ich simulieren Sie den Datei-upload, mit rspec?
InformationsquelleAutor der Frage user727403 | 2011-08-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie fixture_file_upload - Methode zu testen, Datei hochladen:
Setzen Sie Ihre test-Datei in "{Rails.root}/spec/Spiele/Dateien" Verzeichnis
In Fall, dass Sie erwarten, dass die Datei in form von params['upload']['Datendatei']
InformationsquelleAutor der Antwort ebsbk
Ich bin nicht sicher, ob Sie testen können Datei-uploads mithilfe von RSpec allein. Haben Sie versucht,Capybara?
Es ist einfach zu testen Datei-uploads mithilfe von capybara ist
attach_file
Methode von einer Anfrage spec.Beispielsweise (dieser code ist nur demo):
InformationsquelleAutor der Antwort Ken
wenn Ihr Rack::Test* einfach den test-Methoden
dann können Sie die UploadedFile Methode:
*ANMERKUNG: Mein Beispiel basiert auf Sinatra, erstreckt sich die Stange, sondern sollte die Arbeit mit den Schienen, die auch verwendet Rack, TTBOMK
InformationsquelleAutor der Antwort zedd45
Ich nicht getan habe, dies mit RSpec, aber ich habe ein Test::Unit test, der etwas ähnliches macht für ein Foto hochzuladen. Ich die hochgeladene Datei als Instanz von ActionDispatch::Http::UploadedFile, wie folgt:
Etwas ähnliches könnte für Sie arbeiten auch.
InformationsquelleAutor der Antwort Dave Isaacs
Musste ich hinzufügen, die diese beiden enthält, um es arbeiten:
InformationsquelleAutor der Antwort nfriend21