2011-04-08 46 views
8
ruby-1.9.2-p180 :007 > Factory.define :user do |user| 
ruby-1.9.2-p180 :008 >  user.email     "[email protected]" 
ruby-1.9.2-p180 :009?>  user.password    "foobar" 
ruby-1.9.2-p180 :010?>  user.password_confirmation "foobar" 
ruby-1.9.2-p180 :011?> end 
NameError: uninitialized constant Factory 

我的Gemfile:的Rails 3 + FactoryGirl:NameError:未初始化的常量厂

group :test do 
    gem "rspec-rails" 
    gem 'webrat', '0.7.1' 
    gem 'spork', '0.9.0.rc4' 
    gem 'factory_girl_rails' 
end 

即使艰难,似乎我的一切,因为它应该,我不断收到这个错误。我也有factories.rb创建。

谢谢

回答

10

我想你在开发环境中的控制台尝试。但是您只能在测试环境中添加Factory Gem。

如果你想获得Factory_girl开发利用您的Gemfile:

group :test, :development do 
    gem 'factory_girl_rails' 
end 

或者,如果你想测试你的工厂启动您的控制台在测试环境:

rails c test 
2

我们有一个类似的问题在我们的结尾,rake spec似乎随机失败,错误未初始化为常量FactoryGirl。错误是随机的 - >来来去去。我们回去了六次git提交,试图解决它。最后这是一个愚蠢的错误。

根本问题是RAILS_ENV设置为开发。当您运行rake spec时,它需要设置为test

按地址:

  1. 制作肯定的是,我们是在RAILS_ENV 测试环境中运行耙规范,其输出/正常来源。为了永远不会混淆我们的环境,我们修改了zsh $ RPROMPT env变量来显示当前的env。

    出口RPROMPT = “[%{$ fg_no_bold [黄]%} $ RAILS_ENV%{$ reset_color%}]”

  2. 要求FactoryGirl在规范Ruby文件给了一个更好的错误消息。至少rspec会运行,只是在环境出错时以这种方式彻底失败。我们还更新了我们的gemfile,以确保factory_girl_rails和factory_girl同时加载用于开发和测试。

  3. 现在我们只需使用宝石护手在专用终端上运行rpsec并使用适当的RAILS_ENV设置。

它是那些陷阱之一。

我们正在运行Ruby 1.9.3,Rails 3.2.9,Rspec 2.12,factory_girl 4.1。

+0

OMG我忘了我有这套! – Chloe 2013-02-27 04:36:56

0

你也应该在这个例子中

FactoryGirl.define do 
    factory :user do 
    name 'John Doe' 
    date_of_birth { 21.years.ago } 
    end 
end 

factory_girl documentation

2

我也遇到了这个,而我在做哈特尔教程改变Factory.define到FactoryGirl.define,等等。

如果您使用“Spork”来加速测试,并且在添加FactoryGirl代码时它在后台运行,则需要停止并重新启动它。

相关问题