我正在努力为应用添加一些新的验证。整个想法是确保当用户更新其用户名时,它不违反我们的用户名政策。
这是验证人的当前咒语:
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
非常感谢任何帮助。
答案 0 :(得分:1)
用户名仅在模型上为“k~!tten”。由于验证失败,它尚未保存到数据库中。而不是:
expect(user.username).not_to eq "k~!tten"
使用以下内容断言用户名未通过验证:
expect(user.username).not_to be_valid