spec测试导出csv文件

时间:2013-08-05 19:10:28

标签: ruby-on-rails rspec specifications

我正在使用此代码生成csv导出文件,该代码与报告类

相关
class Reports::Donors < Reports::Report

  def initialize(args = {})
    super(args)
    @campaign = args[:report]
    @campaign.report.data[:donations][:tiers].each do |contribution_tier|
      @data = []
      tmp_arr = []
      tmp_arr << ActionController::Base.helpers.number_to_currency(contribution_tier.amount_in_dollars)
      @data << tmp_arr

      @data << ['Date','User Name','Amount in dollars','Address','Email','State']

      contribution_tier.contributions.sort{|a,b| a.amount_in_dollars <=> b.amount_in_dollars}.each do |c|
        tmp_arr = []
        tmp_arr << c.created_at
        tmp_arr << c.user.full_name
        tmp_arr << ActionController::Base.helpers.number_to_currency(c.amount_in_dollars)
        tmp_arr << c.user.address
        tmp_arr << c.user.email
        tmp_arr << c.state.titleize
        @data << tmp_arr
      end
        if @campaign.report.data[:donations][:non_tier][:sum] > 0
          @campaign.campaign.open_contributions.sort{|a,b| a.amount_in_dollars <=> b.amount_in_dollars}.each do |c|
            tmp_arr = []
            tmp_arr << c.created_at
            tmp_arr << c.user.full_name
            tmp_arr << ActionController::Base.helpers.number_to_currency(c.amount_in_dollars)
            tmp_arr << c.user.address
            tmp_arr << c.user.email
            tmp_arr << c.state.titleize
            @data << tmp_arr
          end
         end
      end
    end

我需要为此编写一个规范,但我不知道从哪开始。

1 个答案:

答案 0 :(得分:1)

FWIW - 后来看一个方法并试图提出一个规范会导致沮丧,内疚和狂欢。如果您使用TDD创建它,它将被分解为易于验证的小方法。

提示:将代码分解为小方法。测试那些方法。