2015-04-23 55 views
2

我想为我的用户模型设置我的工厂女孩​​工厂,我似乎无法得到它没有出现某种错误。现在我得到的错误是 “未初始化的常数用户”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

你在app/models目录中有一个User类,对不对? –

+0

是的我做的:user.rb –

+0

我不认为这会工作,但尝试var = FactoryGirl.create(:用户) –

回答

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

是的,我确实。我再次运行迁移,但仍然没有运气。 –

相关问题