2012-08-27 5 views
6

Ich habe die letzten zwei Stunden damit verbracht, herauszufinden, was falsch ist, konnte aber nirgendwo die Antwort finden.Definieren von FactoryGirl für Benutzermodell von Devise schlägt fehl

Es ist meine erste Rails-Anwendung (außer Hartl Tutorial), so dass die Lösung einfach sein kann .. Ich benutze Devise, um meine Benutzer zu verwalten, alles ist wirklich in Ordnung mit ihm bis jetzt.

Der Versuch, die User-Modell zu testen ich ein Werk wie folgt definiert:

FactoryGirl.define do 
    factory :user do 
    email "[email protected]" 
    password "123123" 
    password_confirmation { "123123" } 
    end 
end 

und der Test ist:

describe User do 
# pending "add some examples to (or delete) #{__FILE__}" 

    @user = FactoryGirl.create(:user) 


    subject(:user) 

    it { should respond_to(:email) } 
    it { should respond_to(:password) } 

    it { should be_valid } 
end 

Aber die letzte Zeile (es {be_valid sollte}) den Test nicht .

Ich habe den Wert von Benutzer/@ Benutzer (beide versucht) und es kam Null heraus. Edit: Es ist nicht Null. Seine

#<User id: 13, email: "[email protected]", encrypted_password: "$2a$04$.lWs6yadJu/Ya67xi.W1F.fd6sWLGkzc/59.lgTi0sA7...", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, created_at: "2012-08-27 15:48:23", updated_at: "2012-08-27 15:48:23"> 

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :confirmable, 
    # :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me 
    # attr_accessible :title, :body 

    validates :email, :presence => true 
    validates :password, :presence => true 
end 

Was ist es, dass ich nicht sehe?

Antwort

4

OK, endlich habe ich das Problem gefunden. Es stellt sich heraus, dass Sie "spork" immer dann neu starten müssen, wenn Sie das Benutzermodell ändern, weil es es vorlädt.

+4

Sie könnten auch versuchen, 'config.cache_classes = false 'zu setzen, wie in http://guides.rubyonrails.org/configuring.html, in ** config/environments/test.rb ** - Sollte Sie den Neustart stoppen Spork jedes Mal, wenn Sie eine Änderung vornehmen. – veritas1

Verwandte Themen