Тестирование представлений с помощью rspec — неопределенный current_user в вспомогательном файле при рендеринге представления

#ruby-on-rails #testing #rspec #devise #views

#ruby-on-rails #тестирование #rspec #разработать #Вид

Вопрос:

Я использую rspec с devise и пытаюсь протестировать свои представления. Во вспомогательной функции, которую вызывает мой view, я использую переменную 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
  

Кто-нибудь знает, как это сделать? Заранее спасибо.

Ответ №1:

Я должен был сделать это, чтобы заставить его работать.

 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                                                                            
  

Ответ №2:

Итак, решение для вспомогательных методов — заглушить их. Мне не очень нравится это решение, потому что я вижу в нем ошибку, но это способ сделать то, что нужно сделать.