2013-10-31 39 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

相关问题