为什么我得到FactoryGirl错误的参数数量错误?

FactoryGirl在非rails应用程序中有奇怪的行为。 错误的参数数量错误…不知道为什么。

gideon@thefonso ~/Sites/testing (master)$ rspec spec /Users/gideon/.rvm/gems/ruby-1.9.3-p194/gems/factory_girl-4.1.0/lib/factory_girl/syntax/default.rb:6:in `define': wrong number of arguments (1 for 0) (ArgumentError) from /Users/gideon/Sites/testing/spec/factories.rb:1:in `' 

以下是涉及的文件……

login_user_spec.rb

 require_relative '../spec_helper' require_relative '../lib/login_user' describe "Existing User Log in Scenario", :type => :request do before :all do @user = FactoryGirl(:user) end xit "should allow user to select login from top nav" do visit "/" within("#main-header")do click_link 'Log In' end page.should have_content('Log in to your account') end it "and fill in login form" do visit "/login" within("#login-form")do fill_in 'user-email', :with => @user.email fill_in 'user-password', :with => @user.password end #FIXME - the design crew will make this go away within("#login-form") do click_link '#login-link' #this gives false failing test...geek query...why? end page.should have_content('Manage courses') end end 

Factories.rb

 FactoryGirl.define :user do |u| u.email "joe@website.com" u.password "joe009" end 

user.rb

  class User attr_accessor :email, :password end 

spec_helper.rb

 require 'rubygems' require 'bundler/setup' require 'capybara' require 'rspec' require 'capybara/rspec' require 'json' require 'capybara/dsl' # Capybara configuration Capybara.default_driver = :selenium Capybara.app_host = "http://www.website.com" require 'factory_girl' # give me ma stuff FactoryGirl.find_definitions require "rspec/expectations" include Capybara::DSL include RSpec::Matchers 

答案:用户是一个保留字。将其改为:东西……现在工作正常。

尝试使用自述文件中的新语法

 FactoryGirl.define do factory :user do email "joe@website.com" password "joe009" end end 

如果这是非rails应用程序,则必须先创建User类。 我不确定你是否必须拥有名称,密码和电子邮件的实例变量,但你肯定必须在某处定义该类。

有关详细信息,请参阅Github上的Getting Started文件。

试试这个

 FactoryGirl.define do factory :user do |u| u.email "joe@website.com" u.password "joe009" end end