Каков наилучший способ проверить экспорт в Excel или CSV с помощью rspec? - PullRequest
3 голосов
/ 06 января 2011

Я использую библиотеку ruby ​​CSV для экспорта данных отчетов из приложения Ruby On Rails. И мне интересно, как лучше всего протестировать такую ​​операцию?

Заранее спасибо

1 Ответ

1 голос
/ 06 января 2011

Привет, я использовал Ruby 1.9.2 с Faster CSV, но концепция должна быть похожей. На самом деле у меня есть фабрики во вспомогательном методе, но все это собрано вместе, чтобы было легче увидеть здесь. Я также хотел бы знать, есть ли лучший способ, но это сработало для меня.

Я создал отчет, а затем открыл его, чтобы сравнить с ожидаемыми результатами. Я хотел убедиться, что файл существует. Вы можете сделать что-то подобное, не сохраняя файл.

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, fred@example.com, , , , CA, 12345, , , #{created}\nbarny, rubble, fred@example.com, , , , 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
...