Ich entwickle eine Rails 3.2-Anwendung, mit der Benutzer pdfs herunterladen können. Ich genieße die testgetriebene Entwicklung sehr, wenn ich rspec und shofa Matcher benutze, aber ich bin ratlos.Test-Download von pdf mit rspec und pdfkit
Ich habe den folgenden Code in meinem Controller:
def show_as_pdf
@client = Client.find(params[:client_id])
@invoice = @client.invoices.find(params[:id])
PDFKit.configure do |config|
config.default_options = {
:footer_font_size => "6",
:encoding => "UTF-8",
:margin_top=>"1in",
:margin_right=>"1in",
:margin_bottom=>"1in",
:margin_left=>"1in"
}
end
pdf = PDFKit.new(render_to_string "invoices/pdf", layout: false)
invoice_stylesheet_path = File.expand_path(File.dirname(__FILE__) + "/../assets/stylesheets/pdfs/invoices.css.scss")
bootstrap_path = File.expand_path(File.dirname(__FILE__) + "../../../vendor/assets/stylesheets/bootstrap.min.css")
pdf.stylesheets << invoice_stylesheet_path
pdf.stylesheets << bootstrap_path
send_data pdf.to_pdf, filename: "#{@invoice.created_at.strftime("%Y-%m-%d")}_#{@client.name.gsub(" ", "_")}_#{@client.company.gsub(" ", "_")}_#{@invoice.number.gsub(" ", "_")}", type: "application/pdf"
return true
end
Dies ist eine ziemlich einfache Code, alle es tut, ist mein PDFKit konfigurieren und das erzeugte PDF herunterladen. Jetzt möchte ich das Ganze testen, einschließlich:
- Zuordnung der Instanzvariablen (leicht, natürlich, und das funktioniert)
- Das Senden von Daten, dh die Wiedergabe des pdf => Und das ist wo ich bin fest
ich folgendes versucht:
controller.should_receive(:send_data)
aber das gibt mir
Failure/Error: controller.should_receive(:send_data)
(#<InvoicesController:0x007fd96fa3e580>).send_data(any args)
expected: 1 time
received: 0 times
Kennt jemand eine Möglichkeit zu testen, dass das PDF tatsächlich heruntergeladen/gesendet wird? Welche weiteren Dinge sehen Sie, die auf eine gute Testabdeckung getestet werden sollten? Z. B. wäre das Testen auf den Datentyp, d. H. Anwendung/pdf, nett.
Danke!
Danke, aber leider das gibt mir 'nicht definierte Methode‚response_headers'' - was am Ich mache falsch? – weltschmerz
Haha, ich habe vergessen zu bekommen: show_as_pdf :) Das löst alle Probleme. Danke vielmals! – weltschmerz
Ich möchte den Download-Inhalt testen, aber mit Selen, das scheint nicht zu funktionieren, weiß jemand mehr darüber? –