2013-10-31 69 views
0

我正在爲應用程序添加一些新的驗證。整個想法是確保當用戶更新他們的用戶名時,它不會違反我們的用戶名政策。只有在符合條件時才進行驗證

這是驗證當前咒語:

validates_format_of :username, with: /[0-9a-zA-Z_]+/, 
on: :update, 
if: lambda { |u| u.username_changed? } 

即使此驗證壞字符讓它通過。

這是我的天賦,我現在用:

it "validates and does not update a user with an invalid username" do 
    user.update_attributes(username: "k~!tten") 
    expect(user.username).not_to eq "k~!tten" 
end 

任何幫助,這是極大的讚賞。

回答

1

用戶名僅在模型上爲「k〜!tten」。由於驗證失敗,它尚未保存到數據庫中。相反的:

expect(user.username).not_to eq "k~!tten" 

使用下面的斷言,用戶名沒有通過驗證:

expect(user.username).not_to be_valid 
+0

你是正確的,先生,我改變了它期望從(用戶).not_to be_valid我在我的規範測試後。 – Tempname

相關問題