Ruby on rails 使用rspec测试导出到excel或csv的最佳方法是什么?
我正在使用ruby CSV库从ruby On Rails应用程序导出报告数据。 我想知道测试这种操作的最佳方法是什么Ruby on rails 使用rspec测试导出到excel或csv的最佳方法是什么?,ruby-on-rails,testing,csv,tdd,rspec,Ruby On Rails,Testing,Csv,Tdd,Rspec,我正在使用ruby CSV库从ruby On Rails应用程序导出报告数据。 我想知道测试这种操作的最佳方法是什么 提前感谢您好,我使用的是Ruby 1.9.2,它具有更快的CSV,但概念应该类似。实际上,我有一个助手方法中的工厂,但是把它们放在一起,使这里更容易看到。我也想知道是否有更好的方法,但这对我来说很有效 我生成了报告,然后打开它与预期结果进行比较。我想确认文件存在。您可以在不保存文件的情况下执行类似的操作 describe "Rsvp Class" do created = "#{
提前感谢您好,我使用的是Ruby 1.9.2,它具有更快的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
描述“Rsvp类”do
created=“#{Time.now.to_格式化的_s(:db)}-0800”
在…之前做
[{:first\u name=>“fred”、:last\u name=>“flintstone”、:state=>“CA”、:zip=>“12345”、:created\u at=>created},
{:名字=>“巴尼”,“姓氏=>“瓦砾”,“州=>“CA”,“zip=>“12345”,“创建时间=>创建时间])。每个人|
rsvp=Factory.build(:rsvp)
rsvp.first_name=人[:first_name]
rsvp.last_name=人[:last_name]
rsvp.state=人[:状态]
rsvp.zip=person[:zip]
rsvp.created_at=个人[:created_at]
rsvp.save
结束
结束
它“应该生成一个报告csv文件”吗
response=“名字、姓氏、电子邮件、地址、地址行1、城市、州、邮政编码、变更码、跟踪码,创建于\nfred,flintstone,fred@example.com加利福尼亚州,12345,{created}\n巴尼,瓦砾,fred@example.com,,CA,12345,,#{已创建}\n“
Rsvp.generate_报告
string=“”
CSV.foreach(“#{::Rails.root.to_s}/reports/rsvp_report.CSV”,:quote_char=>',:col_sep=>',',,:row_sep=>:auto)do|row|
字符串Alexey,最好包含应用程序中的示例代码,解释如何导出CSV。如果在内存中准备CSV,然后进行渲染,则测试将不同于使用视图输出CSV。