【问题标题】:Testing CSV.generate with RSpec使用 RSpec 测试 CSV.generate
【发布时间】:2011-12-22 07:56:37
【问题描述】:

我在 rails 3.1 项目中有以下帮助程序 - 我只是想知道是否有办法测试 CSV.generate 调用。我想说我有某种想法如何去做,但事实是我什至不知道从哪里开始。任何想法表示赞赏。

require 'csv'

module Admin::PurchasesHelper
  def csv_purchase_list
    columns = ['course', 'amount', 'first_name', 'last_name', 'contact_phone', 'contact_mobile', 'created_at']
    CSV.generate(:col_sep => ";", :row_sep => "\r\n", :headers => true, :write_headers => true, :return_headers => true) do |csv|
      csv << ["Course", "Amount", "First Name", "Last Name", "Phone", "Mobile", "Created At"]
      Purchase.all.each do |p|
        csv << columns.collect{ |name| p.send(name)}
      end
    end
  end
end

【问题讨论】:

  • 你实现了 CSV.generate 代码吗?如果不是,那么您确定要测试它吗?您可以模拟/存根来模拟它的行为,足以测试您编写的使用它的代码。
  • 点头 好点。这不是我的代码,但我很想确保将购买的物品发送给它。

标签: ruby-on-rails ruby csv rspec


【解决方案1】:

我会这样写:

# helper class to get access to csv_purchase_list
class Foo
  include Admin::PurchasesHelper
end

it "should return Purchases as csv" do
  # create some objects - you have to know its values
  Factory(:purchase)
  Factory(:purchase)

  # you have to prepare file.csv with content from objects created above
  expected_csv = File.read('file.csv')
  generated_csv = Foo.new.csv_purchase_list

  # sometimes it is better to parse generated_csv (ie. when you testing other formats like json or xml
  generated_csv.should == expected_csv
end

【讨论】:

  • 为什么指定 Factory(:purchase) 2 次。请指导
猜你喜欢
  • 2014-08-16
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多