在渲染视图时使用rspec测试视图 - 在辅助文件中未定义current_user

时间:2011-10-31 23:26:15

标签: ruby-on-rails testing rspec devise views

我正在使用rspec,设计并尝试测试我的观点。 在我的视图调用的辅助函数中,我使用变量current_user 这在实践中运行良好,但是使用rspec,我得到一个令人遗憾的“未定义的变量或方法current_user”错误。

我尝试了很多不起作用的东西。

@user = FactoryGirl.build_stubbed(:user)
assign(current_user, @user)
sign_in :user, @user
def current_user
  @user
end
current_user = @user
view.stub!(:current_user).and_return @user
assign[:currrnet_user] = @user

任何人都知道如何做到这一点?提前谢谢。

2 个答案:

答案 0 :(得分:0)

我必须这样做才能使其正常工作。

RSpec.describe 'foos/index.html.erb', type: :view do                                                              
  before do                                                                     
    controller.singleton_class.class_eval do                                    
      def current_user                                                        
        User.find_by(username: 'schmoe')                                     
      end                                                                     
      helper_method :current_user                                             
    end                                                                         
    render                                                                      
  end

  ...                                                                           
end                                                                            

答案 1 :(得分:-3)

因此,辅助方法的解决方案是将它们存根。我真的不喜欢这个解决方案,因为我认为它是一个bug,但它是做需要做的事情的方法。