thefonso
thefonso

Reputation: 3390

Why am I getting FactoryGirl wrong number of arguments error?

Having strange behavior from FactoryGirl in non-rails app. getting wrong number of arguments error...don't know why.

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)>'

Here are the files involved...

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     "[email protected]"
    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

Upvotes: 1

Views: 2638

Answers (4)

Chimed Palden
Chimed Palden

Reputation: 135

Try this

FactoryGirl.define do
    factory :user do |u|
        u.email     "[email protected]"
        u.password  "joe009"
    end
end

Upvotes: 0

Denis Kreshikhin
Denis Kreshikhin

Reputation: 9410

Try to use new syntax from readme

FactoryGirl.define do
  factory :user do
    email "[email protected]"
    password "joe009"
  end
end

Upvotes: 1

thefonso
thefonso

Reputation: 3390

ANSWER: :user is a reserved word..changed it to :stuff...works fine now.

Upvotes: 1

three
three

Reputation: 8478

If this is a non-rails app you will have to create a Userclass first. I'm not sure if you have to have instance vars with name, password and email but you definitely will have to have that class defined somewhere.

See the Getting Started file on Github for more on that.

Upvotes: 0

Related Questions