2011-01-06 3 views
2

Ruby On Rails 응용 프로그램에서보고 데이터를 내보내려면 Ruby CSV 라이브러리를 사용하고 있습니다. 그리고 나는 그러한 작업을 테스트하는 가장 좋은 방법이 무엇인지 궁금합니다. 사전rspec을 사용하여 Excel 또는 CSV로 내보내기를 테스트하는 가장 좋은 방법은 무엇입니까?

+0

Alexey, CSV를 내보내는 방법을 설명하는 앱의 예제 코드를 포함하는 것이 좋습니다. 메모리에 CSV를 준비하고 렌더링하는 경우보기를 사용하여 CSV를 출력하는 경우와는 테스트가 다릅니다. – mtjhax

답변

1

안녕 나는 빠른 CSV를 가지고 루비 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 
관련 문제