2013-03-22 65 views
2

我正在開發Ruby on Rails教程,但在使用FactoryGirl進行測試時遇到問題。 這裏是我的錯誤信息:Rails 3,FactoryGirl:錯誤的參數數量(1爲0)(ArgumentError)

/Users/user/Documents/code/RoR/test/sample_app/spec/factories.rb:13:in `block (2 levels) in <top (required)>': wrong number of arguments (1 for 0) (ArgumentError) 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/syntax/default.rb:18:in `instance_eval' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/syntax/default.rb:18:in `factory' 
from /Users/user/Documents/code/RoR/test/sample_app/spec/factories.rb:12:in `block in <top (required)>' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/syntax/default.rb:49:in `instance_eval' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/syntax/default.rb:49:in `run' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/syntax/default.rb:7:in `define' 
from /Users/user/Documents/code/RoR/test/sample_app/spec/factories.rb:11:in `<top (required)>' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `block in load' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/find_definitions.rb:16:in `block in find_definitions' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/find_definitions.rb:15:in `each' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl-4.2.0/lib/factory_girl/find_definitions.rb:15:in `find_definitions' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/factory_girl_rails-4.2.1/lib/factory_girl_rails/railtie.rb:33:in `block in <class:Railtie>' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:34:in `call' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:34:in `execute_hook' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:42:in `each' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/activesupport-3.2.12/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/application/finisher.rb:59:in `block in <module:Finisher>' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/initializable.rb:30:in `instance_exec' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/initializable.rb:30:in `run' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/initializable.rb:55:in `block in run_initializers' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/initializable.rb:54:in `each' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/initializable.rb:54:in `run_initializers' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/application.rb:136:in `initialize!' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `method_missing' 
from /Users/user/Documents/code/RoR/test/sample_app/config/environment.rb:5:in `<top (required)>' 
from /Users/user/Documents/code/RoR/test/sample_app/spec/spec_helper.rb:51:in `require' 
from /Users/user/Documents/code/RoR/test/sample_app/spec/spec_helper.rb:51:in `<top (required)>' 
from /Users/user/Documents/code/RoR/test/sample_app/spec/controllers/pages_controller_spec.rb:1:in `require' 
from /Users/user/Documents/code/RoR/test/sample_app/spec/controllers/pages_controller_spec.rb:1:in `<top (required)>' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/configuration.rb:819:in `load' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/configuration.rb:819:in `block in load_spec_files' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/configuration.rb:819:in `each' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/configuration.rb:819:in `load_spec_files' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/command_line.rb:22:in `run' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/runner.rb:80:in `run' 
from /Users/user/.rvm/gems/ruby-1.9.3-p385/gems/rspec-core-2.13.0/lib/rspec/core/runner.rb:17:in `block in autorun' 

這裏是我factories.rb:

FactoryGirl.define do 
    factory :user do 
    user.name "abc" 
    user.email "[email protected]" 
    user.password "foobar" 
    user.password_confirmation "foobar" 
    end 
end 

這裏是我在user_controller_spec.rb使用代碼:

before(:each) do 
    @user = FactoryGirl.create(:user) 
end 

我已經在之前提出的問題中嘗試過這些方法,但它們不起作用。有人可以幫我嗎?謝謝!

+1

你的代碼,它甚至如果你剛開始學習Rails的交通十分便利(像我一樣),看起來好像沒什麼問題,除了'user.'在工廠內部,我沒有這些東西,我不知道它是否會產生影響......請嘗試移除它們? – alestanis 2013-03-22 21:38:33

+0

如果你打算在'factory'塊內調用'user',你應該把它作爲塊參數,如下所示:'factory:user do | user |' – patrickmcgraw 2013-03-22 21:39:40

回答

2

你的工廠文件應該僅僅是:

FactoryGirl.define do 
    factory :user do 
    name "abc" 
    email "[email protected]" 
    password "foobar" 
    password_confirmation "foobar" 
    end 
end 

這會工作。

您在初始版本中使用了局部變量'user'。問題是沒有本地變量用戶傳遞給塊,或者在塊中定義。正如上面的評論者之一所指出的那樣 - 如果你想調用user.name,那麼你必須傳遞| user |到塊。即

FactoryGirl.define do 
    factory :user do |user| 
    etc. 

但是這在FactoryGirl中不是必需的。我可以在上面輸入時進行操作。

我建議你閱讀https://github.com/thoughtbot/factory_girl/wiki/Usage - 通過教程:-)

+0

哦,我明白了。沒有用戶變量。謝謝! – randomp 2013-03-22 22:06:30

+0

沒問題 - alwats很樂意幫忙 - 我喜歡看到其他人旅行的路徑,我去年做了這一兩年,並學習這些東西。我做過的最好的決定:-) – 2013-03-22 22:47:08

相關問題