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
我的Gemfile:
group :test do
gem "rspec-rails"
gem 'webrat', '0.7.1'
gem 'spork', '0.9.0.rc4'
gem 'factory_girl_rails'
end
即使很难看似我拥有应有的一切,我仍然会遇到这个错误。我也创建了factory.rb。
由于
答案 0 :(得分:10)
我想你在开发环境中尝试使用控制台。但是只在测试环境中添加Factory gem。
如果您想在Gemfile中使用开发中的Factory_girl:
group :test, :development do
gem 'factory_girl_rails'
end
或者,如果您想测试工厂在测试环境中启动控制台:
rails c test
答案 1 :(得分:2)
我们在结束时遇到了类似的问题,rake规范似乎是随机失败的错误未初始化的恒定FactoryGirl。错误是随机的 - >来来往往。我们回去了六个git提交尝试解决它。最后,这是一个愚蠢的错误。
根本问题是RAILS_ENV设置为开发。运行rake spec时,需要将其设置为 test 。
地址:
确保我们在RAILS_ENV 测试环境中运行rake规范并正确导出/已导出。为了不混淆我们的environemnts,我们修改了zsh $ RPROMPT env变量来显示当前的env。
export RPROMPT =“[%{$ fg_no_bold [yellow]%} $ RAILS_ENV%{$ reset_color%}]”
在规范ruby文件中要求FactoryGirl提供了更好的错误消息。当环境出错时,至少rspec会以这种方式完全失败。我们还更新了我们的gemfile,以确保加载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。
答案 2 :(得分:2)
我在做Hartl教程时遇到了这个问题。
如果您使用“ Spork ”加速测试,并且在添加FactoryGirl代码时它在后台运行,则需要停止并重新启动它。
答案 3 :(得分:0)
您还应该将Factory.define更改为FactoryGirl.define,就像在此示例中一样
FactoryGirl.define do
factory :user do
name 'John Doe'
date_of_birth { 21.years.ago }
end
end
来自factory_girl documentation 的