如何测试在rspec中的do-end块中调用方法的方法

时间:2014-12-22 09:13:17

标签: ruby-on-rails rspec

我有一个方法,我正在编写测试。我想测试generate_csv_headergenerate_csv_line被调用。

def generate_temporary_report_file(temporary_file)
  CSV.open(temporary_file, "wb") do |csv|
    csv << generate_csv_header
    csv << generate_csv_line
  end
  temporary_file
end

到目前为止,这是我的测试:

describe '#generate_temporary_report_file' do
  let(:temp_file) { double(:temp_file, read: 'content') }
  let(:csv_open)  { double(:csv_open) }

  before do
    expect(CSV).to receive(:open).with(temp_file, "wb").and_return(csv_open)
    # expect(item_report_generator).to receive(:generate_csv_header).once
    # expect(item_report_generator).to receive(:generate_csv_line).once
  end

  it 'returns temporary file' do
    expect(item_report_generator.generate_temporary_report_file(temp_file)).to eq temp_file
  end
end

我注释掉了两行,因为这些方法已经被删除了。

如何测试generate_csv_headergenerate_csv_line被调用一次?

谢谢!

0 个答案:

没有答案