如何在任何给定的控制器测试中从Application Controller调用方法

时间:2014-06-12 22:46:26

标签: ruby-on-rails rspec

我有一个控制器,在用户填写表单后,将新模型实例发布到数据库中。此表单使用each do创建,该inventory循环应用程序控制器中定义的一系列 <%= form_for @requestrecord, :html=> {:id => 'form'} do |f| %> <div class="col-xs-12"> <p><b>Items we have available</b></p> </div> <% @inventory.each do |category, list| %> <div class="col-xs-2"> <div class="form-group box"> <h5> <%="#{category}"%> </h5> <% list.each do |thing| %> <%= f.check_box(:items, {:multiple => true}, "#{thing}") %> <%= f.label(:items, "#{thing}") %> </br> <% end %> </div> </div> <% end %> 项。

换句话说,这是视图代码:

def inventory
   @inventory = { some hash }
end

应用程序控制器中有一个定义库存的方法:

def create
    inventory
    @requestrecord = Request.new(request_params)
end

然后在我试图测试的请求控制器中调用此方法:

inventory

问题出在我的Rspec控制器测试中,我现在必须再次手动定义这个before do @inventory = { some hash } end

before

有没有办法在@inventory语句中从Application Controller调用该方法? {{1}}是一个相当长的哈希...

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用'controller'访问rspec中的控制器,所以

before do
  @inventory = controller.inventory
end

应该做的工作!