2011-01-06 76 views
2

Ruby On Railsアプリケーションからレポートデータをエクスポートするために、Ruby CSVライブラリを使用しています。 そして、私はそのような操作をテストする最良の方法は何だろうと思いますか?事前rspecを使用してexcelまたはcsvへのエクスポートをテストする最良の方法は何ですか?

+0

Alexey、アプリのサンプルコードをCSVの書き出し方法を説明することをお勧めします。メモリ内のCSVを作成してレンダリングする場合、ビューを使用してCSVを出力する場合とは異なります。 – mtjhax

答えて

1

こんにちは、私はより高速なCSVを持っているのRuby 1.9.2を使用していたが、概念は類似していなければならないで

感謝。私は実際に私の工場をヘルパーの方法で持っていますが、ここで見やすくなるようにまとめています。私はまた、より良い方法があるかどうかを知りたいが、これは私のために働いた。

私はレポートを生成し、それを開いて期待した結果と比較しました。ファイルが存在していることを確認したかったのです。実際にファイルを保存せずに何か似たようなことをすることができます。

describe "Rsvp Class" do 
created = "#{Time.now.to_formatted_s(:db)} -0800" 
before(:each) do 
    [{:first_name => "fred", :last_name => "flintstone", :state => "CA", :zip => "12345", :created_at => created}, 
    {:first_name => "barny", :last_name => "rubble", :state => "CA", :zip => "12345", :created_at => created}].each do |person| 
    rsvp = Factory.build(:rsvp) 
    rsvp.first_name = person[:first_name] 
    rsvp.last_name = person[:last_name] 
    rsvp.state = person[:state] 
    rsvp.zip = person[:zip] 
    rsvp.created_at = person[:created_at] 
    rsvp.save 
    end 
end 
it "should generate a report csv file" do 
    response = "first name, last name, email, address, address line 1, city, state, zip, variation code, tracking code, created at\nfred, flintstone, [email protected], , , , CA, 12345, , , #{created}\nbarny, rubble, [email protected], , , , CA, 12345, , , #{created}\n" 
    Rsvp.generate_report 

    string = "" 
    CSV.foreach("#{::Rails.root.to_s}/reports/rsvp_report.csv", :quote_char => '"', :col_sep =>',', :row_sep =>:auto) do |row| 
    string << "#{row.join(", ")}\n" 
    end 
    string.should == response 
end 
end 
関連する問題