2012-05-02 18 views
27

Seguo il tutorial di Michal Hartls Rails Capitolo 7. Ho installato la gemma Factory girl. Continuo a ricevere questo errore quando ho eseguito il mio testFabbrica non registrata: utente

Failures: 

1) UsersController GET 'show' should be successful 
    Failure/Error: @user = FactoryGirl.create(:user) 
    ArgumentError: 
     Factory not registered: user 
    # ./spec/controllers/users_controller_spec.rb:10:in `block (3 levels) in <top (required)>' 

Finished in 0.66336 seconds 42 examples, 1 failure 

Failed examples: 

rspec ./spec/controllers/users_controller_spec.rb:14 # UsersController GET 'show' should be successful 

Gemfile

group :test do 
    gem 'autotest', '4.4.6' 
    gem "autotest-growl", "~> 0.2.16" 
    gem "autotest-rails", "~> 4.1.2" 
    gem "rspec", "~> 2.9.0" 
    gem 'rspec-rails', '2.9.0' 
    gem 'webrat', '0.7.3' 
    gem "spork", '0.9.0' 
    gem 'annotate', '~> 2.4.1.beta' 
    gem "factory_girl", "~> 3.2.0" 
end 
# See https://github.com/sstephenson/execjs#readme for more supported runtimes 
gem 'therubyracer', :platform => 

mio user_controller_spec.rb è

require 'spec_helper' 

describe UsersController do 

    render_views 

    describe "GET 'show'" do 
    before(:each) do 
    @user = FactoryGirl.create(:user) 
    end 

    it "should be successful" do 
     get :show, :id => @user 
     response.should be_success 
    end 
    end 

    describe "GET 'new'" do 
    it "should be successful" do 
     get :new 
     response.should be_success 
    end 

    it "should have the right title" do 
     get :new 
     response.should have_selector('title', :content => "Sign up") 
    end 
    end 
end 

mio factories.rb è

FactoryGirl.create :user do |user| 
    user.name     "Mark Brown" 
    user.email     "[email protected]" 
    user.password    "foobar" 
    user.password_confirmation "foobar" 
end 

I modificato

Factory(:name) 

a

FactoryGirl.create(:user) 

sulla linea 10 nella mia user_controller_spec.rb becuase mi è stato sempre un avvertimento deprication. Pensavo che avrebbe risolto il problema, ma ora sto solo ricevendo.

Factory not registered: user 

Qualcuno può dirmi cosa sta succedendo?

risposta

6

cosa succede se si definisce prima la fabbrica, non la si crea? provare questo:

FactoryGirl.define do 
    factory :user do 
    name     "Mark Brown" 
    email     "[email protected]" 
    password    "foobar" 
    password_confirmation "foobar" 
    end 
end 
+0

Questo ha funzionato per me. Grazie! –

3

Avrete bisogno dei 'factory_girl_rails' gioiello sotto il gruppo di prova

+0

ha funzionato per me. Ho usato per errore gem 'factory_girl' invece di 'factory_girl_rails' –

41

Ho avuto lo stesso errore quando ho usato factorygirl in quel capitolo e tutto quello che dovevo fare era di riavviare il server e Spork se lo stai usando. Spero che aiuti

+3

Ripristinare 'spork' mi ha aiutato, grazie! – Martin

+3

Lo stesso qui, riavviato sia il server di rails che guard/spork e quindi i test passano. Questo è un po 'fastidioso. – Raj

+0

Stesso problema e correzione per gli utenti di zeus. – Pistos

52

L'ho già risolto.

La soluzione era di cambiare gem 'factory_girl' in nel mio Gemfile.

+0

Grazie. Questo ha risolto il problema per me. –

+0

Questo ha risolto il problema anche per me - grazie –

+0

Brillante. Grazie! – creativetim

1

Nella tua Gemfile è necessario sostituire con questo

gem "factory_girl_rails", "~> 4.0" 

invece di

gem "factory_girl", "~> 3.2.0" 
0

stavo usando leva come il mio IRB. Quando l'ho rimosso dalle mie gemme, ero in grado di far funzionare correttamente Factory Girl.

rails c -e test 

irb -> FactoryGirl.create(:user) 

Forse qualcuno può spiegare come farlo funzionare con la leva.

Problemi correlati