Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用rspec测试导出到excel或csv的最佳方法是什么?_Ruby On Rails_Testing_Csv_Tdd_Rspec - Fatal编程技术网

Ruby on rails 使用rspec测试导出到excel或csv的最佳方法是什么?

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 CSV库从ruby On Rails应用程序导出报告数据。 我想知道测试这种操作的最佳方法是什么


提前感谢

您好,我使用的是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。