Я использую камень public_activity для создания фидов активности в своем приложении, а в моей модели я использую current_user для определения владельца.Тестирование модели Rspec - current_user в модели
class Question < ActiveRecord::Base
...
include PublicActivity::Model
tracked owner: ->(controller, model) { controller.current_user }
...
end
Я понимаю, что ссылки CURRENT_USER в модели не является нормой, но это, как они recommend doing it.
Это прекрасно работает в приложении, но я бег в проблемы с моими тестами RSpec, где я получаю следующее сообщение об ошибке:
Failure/Error: expect(create(:question)).to be_valid
NoMethodError:
undefined method `current_user' for nil:NilClass
# ./app/models/question.rb:8:in `block in <class:Question>'
# ./spec/models/question_spec.rb:7:in `block (3 levels) in <top (required)>'
Самого тестом является типичным:
describe "Factory" do
it "has a valid factory" do
expect(create(:question)).to be_valid
end
end
Здесь является моей фабрикой:
FactoryGirl.define do
factory :question do
title { Faker::Lorem.characters(30) }
body { Faker::Lorem.characters(150) }
user_id { 1 }
tag_list { "test, respec" }
end
end
Как мне получить этот метод current_user в моей модели для работы в моих тестах?
Я пытался избежать создания create_activity в каждом методе, но вы правы - это путь. Спасибо за помощь. – dmanaster