【问题标题】:How to test variable assignment in RSpec如何在 RSpec 中测试变量赋值
【发布时间】:2015-11-29 22:16:38
【问题描述】:
def hide_gridlines(sheet, hide_gridlines)
  sheet.sheet_view.show_grid_lines = false if hide_gridlines
 end

我需要在 RSpec / Ruby 中测试这个方法,我想写两个测试,一个看如果 hide_gridlines 为 true,则代码 sheet.sheet_view.show_grid_lines = false 是否执行。

另一个是确保代码sheet.sheet_view.show_grid_lines = false在 hide_gridlines 为 false 时不会运行。

sheet 是来自 Axlsx Gem 的工作表,我创建了一个 double,但我不确定如何将 double 设置为具有 sheet_view,然后测试变量声明。

任何关于如何在 RSpec 中测试的指针,我们将不胜感激。

【问题讨论】:

  • 你能重构这段代码吗?简化此方法后,您可能会发现测试变得更容易。

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


【解决方案1】:
context 'set sheet.sheet_view.show_grid_lines to' do
  let(:sheet_view) { double }
  let(:sheet) { double(sheet_view: sheet_view) }

  specify 'false if hide_gridlines' do
    expect(sheet_view).to receive(:show_grid_lines=).with(false)
    subject.hide_gridlines(sheet, true)
  end

  specify 'true unless hide_gridlines' do
    expect(sheet_view).not_to receive(:show_grid_lines=)
    subject.hide_gridlines(sheet, false)
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2021-09-28
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多