簡體   English   中英

如何在任何給定的控制器測試中從Application Controller調用方法

[英]How to call a method from Application Controller in any given controller test

我有一個控制器,可以在用戶填寫表格后將模型的新實例發布到數據庫中。 使用循環在Application Controller中定義的一系列inventory項目的each do創建此表單。

換句話說,這是視圖代碼:

        <%= 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

然后在我要測試的Requests控制器中調用此方法:

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

問題出在我的Rspec控制器測試中,現在我必須再次手動定義此inventory ,如下所示:

before do
     @inventory = { some hash }
end

除了這樣做,還有沒有辦法在before語句中從Application Controller調用該方法? @inventory是一個相當長的哈希...

謝謝!

您可以使用'controller'訪問rspec中的控制器,因此

before do
  @inventory = controller.inventory
end

應該做的工作!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM