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

时间:2012-10-04 17:22:16

标签: ruby rspec factory-bot

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

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 `<top (required)>'

以下是涉及的文件......

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

尝试使用readme

中的新语法
FactoryGirl.define do
  factory :user do
    email "joe@website.com"
    password "joe009"
  end
end

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

试试这个

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