0

У меня есть DashboardController с index методом, который взаимодействует с моей User модели вдоль этих линий:Мокки или фабрики в модульных тестах для контроллера Rails?

def index 
    user = User.first 
    log_data = user.logs 
    # more controller code here that uses the log_data 
end 

Я пишу контроллер спецификации для этого index метода. У меня есть фабрика FactoryGirl, определенная для моей модели пользователя. В модульном тесте для этого, должен ли я издеваться над user здесь с instance_double, или я должен вместо этого создать объект User с FactoryGirl? Существует ли соглашение/стандарт/тенденция о том, как тестировать контроллер?

ответ

0

Я бы сказал, что нет нужды насмехаться над пользовательским объектом - он только отвлекает ваши спецификации от реальности. Вы можете успешно настроить свои функции следующим образом:

describe DashboardController, :type => :controller do 

    let(:user) { create(:user) } 

    describe "#index" do 
    it "your test here" do 
     #### 
    end 
    end 

end 

В другом случае, когда вы обращаетесь к current_user объект, вы можете стремиться использовать, однако следующее:

let(:user) { create :user } 

before do 
    allow(controller).to receive(:current_user).and_return(user) 
end 
Смежные вопросы