2011-08-12

rubyでpdf出力したときのspec

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyでThinReportsを使ったりとかしてpdfを出力する機能を作った場合のテスト方法です。

PDF::Readerを利用します。
なので以下のようにgemでインストール。
gem install pdf-reader

今の段階でインストールされるPDF::Readerのバージョンは、
0.10.0
のようです。

0.10.0を使っているときの方法です。
(0.11.0alphaが最新のようですが、0.11.0ではやり方が違う感じになりそうです)

テストではrspecを使っているとして以下のようなテストケースを書けばよさげです。

require 'spec_helper'

describe OtamesiController do
  it "PDFに想定したデータが埋め込まれる" do
    require 'pdf/reader'
    #以下の結果がpdfを出力しているとします
    get 'otameshi', :id => 1
    output = ""
    receiver = PDF::Reader::TextReceiver.new(output)
    PDF::Reader.string(response.body,receiver)
    output.should match(/埋め込みデータ1/)
    output.should match(/埋め込みデータ2/)
  end
end
これで確認できるのは、想定したデータがPDFのどっかに埋め込まれていることの確認にすぎないので
PDFで出力された値の文字サイズとかは上記ではわかりません。
receiverを変えたらひょっとしたらサイズとかも取れる可能性はあります。


コメントを投稿