2015-04-23 3 views
2

Я пытаюсь настроить фабрику Factory Girl для моей модели пользователей, и я не могу ее получить без какой-либо ошибки. Ошибка я получаю сейчас«Неинициализированный постоянный пользователь» для Factory_Girl Rspec

спецификации "неинициализированным константа пользователя"/factories.rb

factory :user do |user| 

user.name "John Doe" 
user.admin false 
user.created_at Time.now 
user.updated_at Time.now 
user.password_digest nil 
user.remember_token nil 
user.e_admin nil 
user.t_admin true 
user.d_admin false 
user.activated false 
user.activated_at Time.now 
end 

спецификации/spec_helper.rb

require 'rails/all' 
require 'rspec/rails' 
require 'factory_girl_rails' 

RSpec.configure do |config| 

    config.expect_with :rspec do |expectations| 
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true 
    end 

    config.mock_with :rspec do |mocks| 
    mocks.verify_partial_doubles = true 
    end 

    config.filter_run :focus 
    config.run_all_when_everything_filtered = true 

    config.disable_monkey_patching! 
    config.warnings = true 
    if config.files_to_run.one? 
    config.default_formatter = 'doc' 
    end 

    config.profile_examples = 10 

    config.order = :random 
    Kernel.srand config.seed 

    config.include FactoryGirl::Syntax::Methods 

    FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)] 
    FactoryGirl.find_definitions 

end 

спецификации/user_spec.rb

require 'rspec' 
require 'spec_helper' 
require 'factory_girl_rails' 


RSpec.describe 'Log In' do 

    it 'should log user in' do 

    var = create(:user) 

    expect(var.valid?).to eql(true) 
    end 
end 

Кто-нибудь знает, как я могу разрешить эту ошибку?

1) Log In should log user in 
    Failure/Error: var = FactoryGirl.create(:user) 
    NameError: 
     uninitialized constant User 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/activesupport-3.2.21/lib/active_support/inflector/methods.rb:230:in `constantize' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/activesupport-3.2.21/lib/active_support/inflector/methods.rb:229:in `each' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/activesupport-3.2.21/lib/active_support/inflector/methods.rb:229:in `constantize' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/activesupport-3.2.21/lib/active_support/core_ext/string/inflections.rb:54:in `constantize' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:26:in `build_class' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/factory_girl-4.5.0/lib/factory_girl/factory.rb:37:in `run' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:23:in `run' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/activesupport-3.2.21/lib/active_support/notifications.rb:125:in `instrument' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/factory_girl-4.5.0/lib/factory_girl/factory_runner.rb:22:in `run' 
    # /Users/ssuhli200/.rvm/gems/[email protected]/gems/factory_girl-4.5.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in `create' 
    # ./spec/user_spec.rb:10:in `(root)' 
+2

У вас есть класс пользователя в каталоге приложений/моделей, верно? –

+0

Да, я: user.rb –

+0

Я не думаю, что это сработает, но попробуйте var = FactoryGirl.create (: user) –

ответ

5

я понял это, я должен был добавить --require rails_helper к моему .rspec файл. И тогда мне пришлось вытащить строку «FactoryGirl.find_definitions», потому что я получал сообщение об ошибке, что у меня было более одной фабрики пользователей. Спасибо всем за вашу помощь!

0

Ваш завод должен выглядеть следующим образом

FactoryGirl.define do 
    factory :user do 
    name "John Doe" 
    admin false 
    created_at Time.now 
    updated_at Time.now 
    password_digest nil 
    remember_token nil 
    e_admin nil 
    t_admin true 
    d_admin false 
    activated false 
    activated_at Time.now 
    end 
end 

А в структуре папок - spec/factories/user.rb

+0

Я все еще получаю такая же ошибка. :( –

+1

У вас есть файл user.rb в ваших моделях и запустить rake db: migrate, чтобы создать пользователя? Обязательно спросите :) –

+0

Да, я знаю. Я снова выполнил миграцию и до сих пор не повезло. –

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