代码之家  ›  专栏  ›  技术社区  ›  Bitwise

rspec-测试到csv类方法

  •  0
  • Bitwise  · 技术社区  · 7 年前

    我的模型中有这个类方法:

    def self.to_csv
      attributes = %w(title)
    
      CSV.generate(headers: true) do |csv|
        csv << attributes
    
        all.each do |campaign|
          csv << campaign.attributes.values_at(*attributes)
        end
      end
    end
    

    我正在寻找用rspec测试这种方法的好方法。有没有人对这种方法有很好的技巧?

    1 回复  |  直到 7 年前
        1
  •  3
  •   apneadiving    7 年前

    我有几点意见:

    • 我不会用 all 除非你是做后台工作或者你知道收藏不会那么多
    • 如果你真的需要 全部的 ,则不使用 .each 使用 .find_each 分批查询
    • 如果你可以使用工厂BOT

    对于规范本身,我会做:

    it "creates expected csv" do 
      allow(described_class).to receive(:all).and_return([
        described_class.new(title: "title1"),
        described_class.new(title: "title2")
      ])
      expect(described_class.to_csv).to eq "title\ntitle1\ntitle2\n"
    end