测试方法使用Rspec返回PDF数据

Kyl*_*cot 2 ruby testing rspec ruby-on-rails

我有一个Student模型w/a to_pdf方法,它呈现由prawn gem 生成的PDF .

class Student < ActiveRecord::Base
  def to_pdf
    StudentPdf.new(self.id).render
  end
end
Run Code Online (Sandbox Code Playgroud)

我将如何在rspec中为此编写测试以确保此方法返回PDF?

tor*_*o2k 6

任何PDF文档都以特殊字节序列(称为魔术字节或幻数)%PDF(以十六进制表示法为25 50 44 46 )开头,以识别它们.

require 'prawn'
Prawn::Document.new.render[0,4]
# => "%PDF"
Run Code Online (Sandbox Code Playgroud)

因此,如果您只是想确保返回的字符串是PDF文档而您不关心其内容,则可以检查结果魔术字节,例如:

it "must be a PDF" do
  expect(Student.new.to_pdf[0,4]).to eq('%PDF')
end
Run Code Online (Sandbox Code Playgroud)

有关魔术字节的更多信息在这里这里

  • 要扩展这一点,您可能还想使用它:“expect(response.content_type).to eq('application/pdf')” (2认同)