#ruby-on-rails #railstutorial.org
#ruby-on-rails #railstutorial.org
Вопрос:
Я студент, изучающий учебное пособие по ruby on rails. Я работаю над Sample_App, и все работало зеленым цветом, пока я не добавил несколько тестов на действительность пароля. теперь я получаю 1 ошибку и 2 сбоя. Тест, генерирующий ошибку, меняется каждый раз, когда я запускаю тест, но это всегда средство проверки присутствия. Сбои остаются неизменными.
ОШИБКА[«test_layout_links», #<Minitest::Reporters::Suite:0x000055584f4fae28 @name=»SiteLayoutTest»>, 0.00946968999960518] test_layout_links#SiteLayoutTest (0.01с) ArgumentError: ArgumentError: Неизвестный валидатор: ‘PresenseValidator’ app / models /user.rb:10:в <class:User>' app/models/user.rb:1:in
‘
СБОЙ [«test_password_should_be_present_(непустой)», #<Minitest::Reporters::Suite:0x00007f2b307e3c60 @name=»UserTest»>, 0.07021111799986102] test_password_should_be_present_(непустой)#UserTest (0.07с ) Ожидаемое значение true равно нулю или false test/models/user_test.rb:67:в `блокев классе: UserTest’
СБОЙ [«test_password_should_have_minimum_length», #<Minitest::Reporters::Suite:0x00007f2b308e9948 @name=»UserTest»>, 0.09405937999872549] test_password_should_have_minimum_length#UserTest (0,09 с) Ожидаемое значение true равно нулевой или ложный тест/models/user_test.rb:72:в «блоке в классе: UserTest»
18/18: [===========================================================================================================================================] 100% Время: 00:00:00, Время: 00:00:00
Выполнено за 0,54466 с 18 тестов, 31 утверждение, 2 сбоя, 1 ошибка, 0 пропусков
class User < ApplicationRecord
before_save { email.downcase! }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /A[w -.] @[a-zd-] (.[a-zd-] )*.[a-z] z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: true
has_secure_password
validates :password, presense: true, length: { minimum: 6 }
end
это мой файл user.rb
require "test_helper"
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
test "should be valid" do
assert @user.valid?
end
test "name should be present" do
@user.name = " "
assert_not @user.valid?
end
test "email should be present" do
@user.email = " "
assert_not @user.valid?
end
test "name should not be too long" do
@user.name = "a" * 51
assert_not @user.valid?
end
test "email should not be too long" do
@user.email = "a" * 244 "@example.com"
assert_not @user.valid?
end
test "email validation should accept valid addresses" do
valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
first.last@foo.jp alice bob@baz.cn]
valid_addresses.each do |valid_address|
@user.email = valid_address
assert @user.valid?, "#{valid_address.inspect} should be valid"
end
end
test "email validation should reject invalid addresses" do
invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.
foo@bar_baz.com foo@bar baz.com foo@bar..com]
invalid_addresses.each do |invalid_address|
@user.email = invalid_address
assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
end
end
test "email addresses should be unique" do
duplicate_user = @user.dup
@user.save
assert_not duplicate_user.valid?
end
test "email addresses should be saved as lower-case" do
mixed_case_email = "Foo@ExAMPle.CoM"
@user.email = mixed_case_email
@user.save
assert_equal mixed_case_email.downcase, @user.reload.email
end
test "password should be present (nonblank)" do
@user.password = @user.password_confirmation = " " * 5
assert_not @user.valid?
end
test "password should have minimum length" do
@user.password = @user.password_confirmation = "a" * 5
assert_not @user.valid?
end
end
это мой тестовый файл. Это последние два файла, с которыми я работал, когда появились ошибки. Буду признателен за любую помощь, я могу предоставить дополнительную информацию или другие части кода, если кто-нибудь сможет выяснить, где еще мне нужно искать, что происходит.
Комментарии:
1. Вы неправильно
presence
написалиvalidates :password, presense: true, length: { minimum: 6 }
.2. Не могу поверить, что я это пропустил! Спасибо, я прошел через эту строку, вероятно, 100 или более раз. Клянусь, это всегда самая простая, мельчайшая деталь….