2012-02-03 3 views
1

Вот мой Код модели:Rails модель неудачу тест утверждение

class User < ActiveRecord::Base 

    validates :email, :presence => true, 
        :uniqueness => true, 
        :format => { 
        :with => %r{^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$}, 
        :message => "You must enter a valid email address." 
        } 

    validates :password, :presence => true, 
         :confirmation => true, 
         :length => { :in => 6..20 } 

    validates :password_confirmation, :presence => true 

    validates :firstname, :presence => true 

    validates :lastname, :presence => true 

end 

И мой тест:

require 'test_helper' 

class UserTest < ActiveSupport::TestCase 

    test "user email must not be empty" do 
    user = User.new 
    assert user.invalid? 
    assert user.errors[:email].any? 
    end 

    test "user password must be between 6 and 20 characters" do 
    user = User.new(:email => "stapia.gutierre[email protected]", 
        :firstname => "sergio", 
        :lastname => "tapia") 

    user.password = "123" 
    assert user.invalid? 

    user.password = "" 
    assert user.invalid? 

    #6 characters. 
    user.password = "123456" 
    assert user.valid? 

    #20 characters. 
    user.password = "123456789" 
    assert user.valid? 

    #21 characters. 
    user.password = "123456789" 
    assert user.invalid? 

    end 

end 

И результат испытаний:

[email protected]:~/code/ManjarDeOro$ rake test:units 
Run options: 

# Running tests: 

.F 

Finished tests in 0.105599s, 18.9395 tests/s, 47.3488 assertions/s. 

    1) Failure: 
test_user_password_must_be_between_6_and_20_characters(UserTest) [/home/sergio/code/ManjarDeOro/test/unit/user_test.rb:24]: 
Failed assertion, no message given. 

2 tests, 5 assertions, 1 failures, 0 errors, 0 skips 

Таким образом, утверждение не на этот бит:

#6 characters. 
user.password = "123456" 
assert user.valid? 

Так что же происходит? Является ли мое условие для утверждения неправильным? Я думал, что пароль из 6 символов превратит мой «пользовательский» объект в .valid.

Я новичок в Rails.

+3

вы забыли добавить 'password_confirmation =«123456»', чтобы пользователь действует – yoavmatchulsky

+0

Спасибо, я пропустил это. –

+0

@yoavmatchulsky Следует добавить это как ответ. – tadman

ответ

4

Ваш пользователь не был проверен, так как вы пропустили часть пользователя password_confirmation.

user.password = "123456" 
user.password_confirmation = "123456" 
assert user.valid? 
Смежные вопросы