2011-04-08 32 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代碼時它在後臺運行,則需要停止並重新啓動它。

相關問題