由于密码测试导致rails验证邮件验证错误?
问题描述:
继迈克尔·哈特尔的导轨导的最新版本由于密码测试导致rails验证邮件验证错误?
我已经在我的测试/模型/ user_test.rb
require 'test_helper'
class UserTest < ActiveSupport::TestCase
def setup
# prevously.
#@user = User.new(name: "Example Name", email: "[email protected]")
# password and password_conformation is added after has_secure_password is implemented in User.rb
@user = User.new(name: "Example Name", email: "[email protected]", password: "foobar", password_confirmation: "foobar")
end
.... # other tests
# should be a valid user
test "should be valid" do
assert @user.valid?
end
# test for valid email addresses
test "email validation should accept valid addresses" do
valid_addresses = %w[[email protected] [email protected] [email protected]
[email protected] [email protected]]
valid_addresses.each do |valid_address|
@user.email = valid_address
assert @user.valid?, "#{valid_address.inspect} should be valid"
end
end
#test for invalid email addresses
test "email validation should reject invalid addresses" do
invalid_addresses = %w[[email protected],com user_at_foo.org [email protected]
[email protected]_baz.com [email protected]+baz.com]
invalid_addresses.each do |invalid_address|
@user.email = invalid_address
assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
end
end
# PROBLEM STARTS HERE !!!!
# test password minimum length as 8
test "password should have a minimum length" do
@user.password = @user.password_confirmation = "a" * 7
assert_not @user.valid?
end
..... # more other tests
end
出于某种原因,下面的测试文件,它返回下面当我运行包的exec耙测试
1) Failure:
UserTest#test_email_validation_should_accept_valid_addresses [/Users/jackCHH/Desktop/Websites/cloudSolar/test/models/user_test.rb:49]:
"[email protected]" should be valid
2) Failure:
UserTest#test_should_be_valid [/Users/jackCHH/Desktop/Websites/cloudSolar/test/models/user_test.rb:14]:
Failed assertion, no message given.
在我添加测试脚本来测试密码的长度后,问题就开始了。我还添加了验证:密码,长度:{最小:8}到我的模型User.rb.如果我删除模型中的验证线和password_length测试脚本,测试再次通过。
为@user我的电子邮件声明似乎是正确的([email protected]),所以我不知道为什么它是一个无效的电子邮件现在
我在做什么错?
答
我找到了答案。
在我的@user声明中,我的密码和password_confirmation都是foobar,它只有长度为6.我将它设置为至少需要8个字符,因此它会返回一个错误。
将密码更改为thisfoobar后,问题就解决了。
答
我得到了同样的问题,但有
attr_accessor:密码:password_confirmation
在user.rb文件,一旦我删除了此行一切工作没有错误。