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.
вы забыли добавить 'password_confirmation =«123456»', чтобы пользователь действует – yoavmatchulsky
Спасибо, я пропустил это. –
@yoavmatchulsky Следует добавить это как ответ. – tadman