2013-07-29 39 views
1

所以我有一个奇怪的问题,我有3个工厂宣布,其中只有1个工厂初始化罚款,其余的人给予了非恒定不变。 我不知道我在做什么错。 我知道这个问题已被问过很多次,但没有一个答案解决我的问题。工厂女孩:NameError unintialized常数为一个工厂

这里是我的规格/工厂/ sample_factory.rb

require 'faker' 

FactoryGirl.define do 

factory :early_access do 
    email {Faker::Internet.email} 
end 

factory :login do 
    email {Faker::Internet.email} 
    password "password" 
end 

factory :user do 
     display_name {Faker::Internet.name} 
     email {Faker::Internet.email} 
     username {Faker::Internet.username} 
     password "password" 
end 

这里是型号规格文件规范/模型/ sample.rb

require 'spec_helper.rb' 

describe EarlyAccess do 

    it "has a valid factory" do 
     FactoryGirl.build(:early_access).should be_valid 
    end 

    it "has a valid factory login" do 
     FactoryGirl.build(:login).should be_valid 
    end 
end 


    it "has valid factory user" do 
     FactoryGirl.build(:user).should be_valid 
    end 
end 

这些中,只有第一个early_access通行证其余的失败

.FF 

Failures: 

    1) EarlyAccess has a valid factory 2 
    Failure/Error: FactoryGirl.build(:login).should be_valid 
    NameError: 
     uninitialized constant Login 
    # ./spec/models/sample.rb:10:in `block (2 levels) in <top (required)>' 

    2) EarlyAccess has valid factory user 
    Failure/Error: 
    NameError: 
     uninitialized constant User 
    # ./spec/models/sample.rb:16:in `block (2 levels) in <top (required)>' 

我已经在我的spec_helpe中包含了factory_girl_rails河

+2

有型号登录和用户?它试图根据工厂名称初始化模型。如果工厂名称是用户,它将尝试执行'User.new'。 – usha

+0

我不认为它与您的问题有关,但是您的规格列表中​​存在语法错误。第三个'it'调用不被'describe'包围。 –

回答

2
  1. 请确保您有机型EarlyAccess,登录,用户自定义
  2. 的车型应手动事先要求或符合的ActiveSupport ::依赖自动加载约定(如位于应用程序/模型/ login.rb应用程序/ models/user.rb)。

如果您有这些模型位于某个非标准目录 - 需要它们手动或将目录添加到config/application.rb config.autoload_paths数组。