2014-10-17 110 views
1

继迈克尔·哈特尔的导轨导的最新版本由于密码测试导致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]),所以我不知道为什么它是一个无效的电子邮件现在

我在做什么错?

回答

2

我找到了答案。

在我的@user声明中,我的密码和password_confirmation都是foobar,它只有长度为6.我将它设置为至少需要8个字符,因此它会返回一个错误。

将密码更改为thisfoobar后,问题就解决了。

0

我得到了同样的问题,但有

attr_accessor:密码:password_confirmation

在user.rb文件,一旦我删除了此行一切工作没有错误。