#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:
Итак, решение для вспомогательных методов — заглушить их. Мне не очень нравится это решение, потому что я вижу в нем ошибку, но это способ сделать то, что нужно сделать.