测试调用私有方法

时间:2017-04-27 20:30:22

标签: ruby-on-rails rspec automated-tests

我正在尝试测试一个调用私有函数的公共函数。这是公共职能的简化版本:

def gera_documento
  set_layout #the private method
  return documento.to_pdf
end

规范专门测试gera_documento,而非set_layout

it "retorna um PDF" do
  expect(Gerador.new(@doc).gera_documento.render[0,4]).to eq('%PDF')
end

测试失败,出现以下错误:

Failure/Error: set_layout

     NoMethodError:
       private method `set_layout' called for #<Gerador:0x00564d2bd5e868>

如果我公开set_layout,则测试通过。发生了什么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用实例eval,如

@your_controller = SpqwerController.new
@your_controller.instance_eval{ set_layout }