RSpec:在视图中存根控制器方法

时间:2012-02-25 20:32:32

标签: ruby-on-rails ruby-on-rails-3 rspec rspec2 rspec-rails

查看规范失败,因为ApplicationController方法logged_in?希望返回用户。

不确定如何规范这个。目前在before(:each)我有:

controller.stub!(:logged_in?).and_return(FactoryGirl.create(:active_user))
@ballots = FactoryGirl.create_list(:full_ballot, 2)

无效:

Failure/Error: render
ActionView::Template::Error:
  undefined method 'logged_in?' for #<#<Class:0x007f9c908e4b10>:0x007f9c90873b68>

FWIW::active_user是附加到:full_ballot

的用户的用户工厂

更新:根据要求:

class ApplicationController < ActionController::Base
  ...
  def current_user
    @current_user ||= User.find(cookies[:id_token]) if cookies[:id_token]
  end

  def logged_in?
    current_user
  end
  ...
end

1 个答案:

答案 0 :(得分:2)

了解devise test helpers如何做到这一点。看起来您可以在测试之前定义此方法,它应该可以工作:

def logged_in?
   FactoryGirl.create :active_user
end