1

我正在使用此代码生成一个 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

结尾

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

4

1 回答 1

1

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

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

于 2013-08-05T20:56:34.240 回答