【问题标题】:Ruby Rspec AXLSX unit testing errorRuby Rspec AXLSX 单元测试错误
【发布时间】:2016-10-12 11:43:00
【问题描述】:

这是我的代码。

wb = xlsx_package.workbook
wb.add_worksheet(name: 'my_work_sheet') do |sheet|
   sheet.add_row ['first row']
end

我已经为上述代码编写了单元测试。 就是这样:

it 'should write data in file' do
    workbook = double('Workbook')
    worksheet = double('Worksheet')

    expect(xlsx_package).to receive(:workbook).and_return(workbook)
    expect(workbook).to receive(:add_worksheet).with(name: 'my_work_sheet').and_return(worksheet)
    expect(worksheet).to receive(:add_row).with(['first row'])
end

我收到错误'xlsx_package'找不到

【问题讨论】:

  • 我遇到了同样的问题。
  • view 测试吗?您能否至少提供与测试相关的内容(之前/让/描述块)的完整信息?
  • 没有 before/after/let 语句。描述块是:描述'report.xlsx.axlsx'做结束实际文件名是'report.xlsx.axlsx'

标签: ruby-on-rails ruby unit-testing rspec axlsx


【解决方案1】:

xlsx_package 的分配方式如下:

def self.call(template)
  "xlsx_author = defined?(xlsx_author).nil? ? nil : xlsx_author;\n" +
  "xlsx_created_at = defined?(xlsx_created_at).nil? ? nil : xlsx_created_at;\n" +
  "xlsx_use_shared_strings = defined?(xlsx_use_shared_strings).nil? ? nil : xlsx_use_shared_strings;\n" +
  "xlsx_package = Axlsx::Package.new(\n" +
    ":author => xlsx_author,\n" +
    ":created_at => xlsx_created_at,\n" +
    ":use_shared_strings => xlsx_use_shared_strings\n" +
    ");\n" +
  template.source +
  ";\nxlsx_package.to_stream.string;"
end

https://github.com/straydogstudio/axlsx_rails/blob/afdcf7266b91f3d70c640209702257a635afddc4/lib/axlsx_rails/template_handler.rb#L13

如您所见,您不能存根,但您可以稍微更改一下测试:

it 'should write data in file' do
  workbook = double('Workbook')
  worksheet = double('Worksheet')
  xlsx_package = double('Package', workbook: workbook)

  expect(Axlsx::Package).to receive(:new).and_return(xlsx_package)

  expect(xlsx_package).to receive(:workbook).and_return(workbook)
  expect(workbook).to receive(:add_worksheet).with(name: 'my_work_sheet').and_return(worksheet)
  expect(worksheet).to receive(:add_row).with(['first row'])
end

我不能给你完整的例子,因为你还没有发布你的视图模板。 您还需要了解渲染如何与视图测试一起使用,因为您的测试仍然无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多