2012-05-23 272 views
0

我正在學習Rspec。當我運行我的測試用例進行電子郵件驗證時,我收到了一個無法理解的錯誤。請解釋一下。rspec電子郵件驗證

1) User should check for email validation 
    Failure/Error: @test_user.should have(1).errors_on(:email) 
     expected 1 errors on :email, got 2 
    # ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>' 

Finished in 0.12903 seconds 
2 examples, 1 failure 

我的測試用例是下面:

it"should check whether name is present or not" do 
    @test_user.name = nil 
    @test_user.should have(1).errors_on(:name) 
    end 

    it "should check for email validation"do 
    @test_user.email = nil 
    @test_user.should have(2).errors_on(:email) 
    end 
end 
+0

我只是重讀你的問題,我顯然沒有讀過它不夠徹底。我可能猜測你的@test_user的狀態在測試之間沒有得到重置。你能否提供你的spec文件中設置這個變量的部分? – dogenpunk

回答

0

如果你正在驗證既存在驗證和某種形式驗證的電子郵件屬性,那麼你會通過設置讓兩個錯誤屬性爲零。

也許你可以試試:

validates :email, presence: true, 
        format: { with: %r\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/, 
          allow_nil: true } 
+0

是的! @dogenpunk非常感謝! :) –