2016-01-03 2 views
0

Я strugging вокруг неинициализированного постоянной ошибки с FactoryGirlFactoryGirl неинициализированным постоянная

NameError: uninitialized constant Usernotactivated 

У меня есть следующие в моем factories.rb файле

FactoryGirl.define do 
    factory :usernotactivated do 
    name "foonotactiv" 
    email "[email protected]" 
    password "secretnot" 
    activated false 
end 
end 

и следующее в моей спецификации

it "should redirect to activation alert when it signs me in with an inactivated account" do 
user = FactoryGirl.build(:usernotactivated) 
visit login_path 
    fill_in 'Email', :with => usernotactivated.email 
    fill_in 'Password', :with => usernotactivated.password 
click_button 'Sign in' 
expect(page).to have_content 'your account is not activated' 
end 

В обоих файлах rails_helper.rb и spec_helper.rb Я добавил эти строки:

require 'factory_girl_rails' 

Я также попытался

require 'factory_girl' 

Так или иначе, я меняю «usernotactivated» с «пользователь» Я не получаю эту неинициализированный постоянную ошибку, но я не уверен, является ли это потому, что «пользователь» может быть защищенное имя. Может ли кто-нибудь дать мне подсказку, где я должен исследовать этот вопрос? Не могли бы вы также рассказать мне разницу между файлом rails_helper (который мне нужен во всех моих спецификациях) и файлом spec_helper? Спасибо.

ответ

0

FactoryGirl строит экземпляры ваших моделей - по умолчанию завод с именем :usernotactivated захочет создать экземпляр модели Usernotactivated. У вас нет этой модели в вашем приложении, поэтому вы получаете сообщение об ошибке.

Если вместо этого завод должен произвести экземпляр вашей User модели, вы можете либо переименовать завод, чтобы быть :user, или добавить опцию имя класса для вашего завода:

factory :user_not_activated, class_name: "User" do 
+1

API-интерфейс был изменен , синтаксис теперь 'factory: user_not_activated, class: User do' – smeshko

Смежные вопросы