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

对此的任何帮助将不胜感激。

4

1 回答 1

1

用户名仅在模型上为“k~!tten”。由于验证失败,尚未将其保存到数据库中。代替:

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

使用以下断言用户名未通过验证:

expect(user.username).not_to be_valid
于 2013-10-31T21:20:53.863 回答