使用rspec测试Rails ApplicationController方法

时间:2013-05-02 14:33:07

标签: ruby-on-rails rspec-rails

无法弄清楚如何测试使用私有ApplicationController方法的操作。解释:

用户拥有并属于许多组织(通过角色),反之亦然。组织有一堆相关的实体,但在应用程序中,用户一次只处理一个组织,因此对于我的所有控制器方法,我希望使用当前组织。所以在我的ApplicationController中:

private

# Returns the organisation that is being operated on in this session.
def current_org
  # Get the org id from the session. If it doesn't exist, or that org is no longer operable by the current user,
  # find an appropriate one and return that.
  if (!session[:current_organisation_id] || !current_user.organisations.where(['organisations.id = ?', session[:current_organisation_id]]).first)
    # If an org doesn't exist for this user, all hope is lost, just go to the home page
    redirect_to '/' if (!current_user.organisations.first)
    # Otherwise set the session with the new org
    session[:current_organisation_id] = current_user.organisations.first.id;
  end
  # Return the current org!
  current_user.organisations.first
end

首先,我不知道这是否是最好的范围。我喜欢一些优雅的default_scope,但是使用会话变量这似乎有问题。无论如何,上面让我在控制器中做到这一点:

class HousesController < ApplicationController
  def index
    @houses = current_org.houses
  end
end

所以现在我想使用rspec来测试我的控制器。如何确保可以调用current_org方法并返回其中一个factory_girl组织模型,以便我可以编写规范。我对如何最好地将工厂,规格,动作和AppControlled方法结合起来感到困惑。

0 个答案:

没有答案