【发布时间】:2019-09-17 08:54:12
【问题描述】:
我有一个简单的 CSV rails 生成器,我不知道如何使用 rspec 对其进行测试。我试图关注这篇文章 https://making.dia.com/testing-csv-files-in-rails-on-the-fly-7a1285cc2aac 和那篇文章 Testing CSV.generate with RSpec 但我只是不明白那里发生了什么,这些例子似乎有所不同。
module AdminLogData
class CsvAdminLogGenerator
LOG_HEADERS = ['Date&Time', 'Action', 'New Data'].freeze
def initialize(start_date:, end_date:)
@start_date = start_date
@end_date = end_date
end
def call
AdminPanelLog.dates_between(start_date, end_date).find_each do |admin_log|
CSV.generate(headers: LOG_HEADERS, col_sep: ';', encoding: 'UTF-8') do |csv|
csv << admin_log.created_at
csv << admin_log.action_type
csv << admin_log.admin_email
csv << admin_log.new_data
end
end
end
end
end
谁能解释我如何测试这个类?我应该先创建一些假的 csv 吗?
spec
RSpec.describe AdminLogData::CsvAdminLogGenerator do
subject(:csv_file) { described_class.new(start_date, end_date).call }
let(:start_date) { 3.months.ago }
let(:end_date) { 2.months.ago }
let(:header) { 'column1, column2, column3' }
let(:row2) { 'value1, value2, value3' }
let(:row3) { 'value1, value2, value3' }
let(:rows) { [header, row2, row3] }
it 'creates CSV file with proper value' do
expect(csv).to receive(:<<).with(log.created_at)
end
end
编辑:
expected collection contained: ["2019-06-17 22:13:48 +0200,New,monte@kuphal.biz,\"{\"\"email\"\"=>\"\"jeanna@schinner.io\"\", \"\"ro...=>\"\"2019-09-16T22:13:48.752+02:00\"\", \"\"other_activities\"\"=>\"\"forbidden websites\"\"}\"\n"]
actual collection contained: ["2019-06-17 22:13:48 +0200", "New", "monte@kuphal.biz", "{\"email\"=>\"brandon@williamsonsporer.org\... \"last_update\"=>\"2019-09-16T22:13:48.752+02:00\", \"other_activities\"=>\"forbidden websites\"}"]
the missing elements were: ["2019-06-17 22:13:48 +0200,New,monte@kuphal.biz,\"{\"\"email\"\"=>\"\"jeanna@schinner.io\"\", \"\"ro...=>\"\"2019-09-16T22:13:48.752+02:00\"\", \"\"other_activities\"\"=>\"\"forbidden websites\"\"}\"\n"]
the extra elements were: ["2019-06-17 22:13:48 +0200", "New", "monte@kuphal.biz", "{\"email\"=>\"brandon@williamsonsporer.org\... \"last_update\"=>\"2019-09-16T22:13:48.752+02:00\", \"other_activities\"=>\"forbidden websites\"}"]
【问题讨论】:
标签: ruby-on-rails csv rspec