首页 > 解决方案 > CSV 下载类 Ruby 的单元测试(不是 Capybara)

问题描述

我需要为class UsersCsvGenerator. 需要 Rspec 单元测试

我的课是:


class UsersCsvGenerator

  def initialize(users, fields:)
    @users = users
    @fields = fields
  end

  def call
    CSV.generate do |csv|
      csv << @fields
      @users.each do |user|
        csv << user.attributes.values_at(*@fields)
      end
    end
  end

  def self.call(users, fields: User.column_names)
    new(users, fields: fields).call
  end
end

users_controller 是:

def index
      @users = User.all
      respond_to do |format|
        format.html
        format.csv do
          send_data UsersCsvGenerator.call(@users,
                                           fields: %w[email first_name
                                                      last_name country
                                                      last_sign_in_at
                                                      current_sign_in_ip
                                                      last_sign_in_ip])
        end

我认为是这样的:

require 'rails_helper'

RSpec.describe UsersCsvGenerator do
  let(:users) { UsersCsvGenerator.new}

  context 'Test' do
    it do
      expect(users("")).to eq  ()
    end
  end
end

但这一切都错了!

标签: ruby-on-railsrubytestingrspec

解决方案


推荐阅读