2014-10-17 46 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文件,一旦我刪除了此行一切工作沒有錯誤。