Ruby on rails 3 轨道3和x2B;FactoryGirl:NameError:未初始化的常量工厂

Ruby on rails 3 轨道3和x2B;FactoryGirl:NameError:未初始化的常量工厂,ruby-on-rails-3,factory-bot,Ruby On Rails 3,Factory Bot,我的档案: ruby-1.9.2-p180 :007 > Factory.define :user do |user| ruby-1.9.2-p180 :008 > user.email "user@example.com" ruby-1.9.2-p180 :009?> user.password "foobar" ruby-1.9.2-p180 :010?> user.passwo

我的档案:

ruby-1.9.2-p180 :007 > Factory.define :user do |user|
ruby-1.9.2-p180 :008 >       user.email                  "user@example.com"
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
即使很艰难,我似乎拥有一切,因为它应该,我不断得到错误。我还创建了factories.rb


谢谢

我想您可以在开发环境中的控制台中进行尝试。但您只在测试环境中添加工厂gem

如果要访问正在开发中的Factory\u girl,请在GEM文件中使用:

group :test do 
  gem "rspec-rails"
  gem 'webrat', '0.7.1'
  gem 'spork', '0.9.0.rc4'
  gem 'factory_girl_rails'
end
或者,如果您想在工厂测试,请在测试环境中启动控制台:

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

我们也遇到了类似的问题,rake规范似乎随机失败,错误为uninitialized constant FactoryGirl。错误是随机的->来来往往。我们返回了半打git提交,试图解决它。最后这是一个愚蠢的错误

根本问题是RAILS_ENV设置为development。运行rake spec时,需要将其设置为test

地址:

  • 确保我们在RAILS_ENV测试环境中运行rake spec,并正确导出/源代码。为了避免混淆我们的环境,我们修改了zsh$RPROMPT env变量以显示当前的环境

    export RPROMPT=“[%{$fg\u no\u bold[黄色]]]}$RAILS\u ENV%{$reset\u color%}”

  • 规范ruby文件中的Require FactoryGirl给出了更好的错误消息。当环境出错时,rspec至少会以这种方式运行vs。我们还更新了GEM文件,以确保为开发和测试加载了factory_girl_rails和factory_girl

  • 现在,我们只需在一个带有适当RAILS_ENV设置的专用终端中使用gem-guard运行rpsec

  • 这就是其中一个陷阱


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

    您还应该将factory.define更改为FactoryGirl.define,如本例所示

    rails c test
    

    我在做Hartl教程时也遇到了这个问题


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

    OMG我忘了我有这套!
     FactoryGirl.define do
      factory :user do
        name 'John Doe'
        date_of_birth { 21.years.ago }
      end
    end