如何在RSpec中测试变量赋值

时间:2015-11-29 22:16:38

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

def hide_gridlines(sheet, hide_gridlines)
  sheet.sheet_view.show_grid_lines = false if hide_gridlines
 end

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

另一种方法是确保如果hide_gridlines为false,则代码sheet.sheet_view.show_grid_lines = false不会运行。

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

有关如何在RSpec中测试此内容的任何指示,您的帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

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