2012-02-26 2 views
1

저는 rspec, rails 3.2.1을 사용하고 있으며 Devise "User"모델에서 테스트를 실행하고 있습니다.레일에서 내 길이 테스트를 볼 수 없습니까?

어떤 이유에서든 내 모든 테스트가 길이와 관련이 없으므로 (모든 테스트가 실패 함) 아직 필요한 검증을 수행했습니다. 또한 "필수"유효성 검사도 정상적으로 작동합니다.

부탁드립니다. 어떻게 유효성 확인 메시지를 주문합니까? 그 첫 번째 입력 상자 여기

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

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

    username_regex = /\A[\w_]+\z/i 

    validates :username, :presence => true, 
         :uniqueness => true, 
         :format  => { :with => username_regex, 
             :message => "Username can only contain letters, numbers and underscores." }, 
         :length  => { :minimum => 3, 
             :maximum => 15 } 

    validates :bio,  :length  => { :maximum => 255 } 

end 

는 서버가 캐싱하기 때문에

require 'spec_helper' 

describe User do 

    before(:each) do 
    @attr = { 
     :username => "TestUser", 
     :email => "[email protected]", 
     :password => "123456", 
     :bio  => "This is my bio" 
    } 
    end 

    it "should create a new instance given a valid attribute" do 
    User.create!(@attr) 
    end 

    it "should require a username" do 
    no_username_user = User.new(@attr.merge(:username => "")) 
    no_username_user.should_not be_valid 
    end 

    it "should require an email" do 
    no_email_user = User.new(@attr.merge(:email => "")) 
    no_email_user.should_not be_valid 
    end 

    it "should reject spaces in username" do 
    space_username = User.new(@attr.merge(:username => "Test User")) 
    space_username.should_not be_valid 
    end 

    it "should reject usernames that are too long" do 
    long_username = User.new(@attr.merge(:username => "#{'a'*16}")) 
    long_username.should_not be_valid 
    end 

    it "should reject short bios" do 
    long_bio = User.new(@attr.merge(:bio => "12")) 
    long_bio.should_not be_valid 
    end 

    it "should reject long bios" do 
    long_bio = User.new(@attr.merge(:bio => "#{'b'*256}")) 
    long_bio.should_not be_valid 
    end 

    it "should allow no bio" do 
    no_bio = User.new(@attr.merge(:bio => "")) 
    no_bio.should be_valid 
    end 
end 
+0

정확히 어떤 사양이 실패 했습니까? –

+2

서버를 다시 시작해 보셨습니까? 또한 유효성 검사없이 콘솔에서 사용자를 만들려고하면 어떻게됩니까? user.errors를 호출 할 때 길이 확인을 표시합니까? – PhillipKregg

+0

나는 바보입니다. 서버를 다시 시작하면 문제가 해결되었습니다. x 감사합니다. Phillip – Tallboy

답변

0

그것은있을 수 있습니다 실패하고 내 테스트를위한 코드에도 불구하고 사용자 이름 오류 메시지가 하단에 보여주고있다 시도 다시 시작하십시오.

+0

중복, 의견보기 – phoet

+0

오, 나는 몰랐다. –

관련 문제