在我的user.rb模型中,我有:
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
我有以下测试:
test "email address uniqueness regardless of case" do
dup_user = User.new(name: "First Last", email: @user.email.upcase)
dup_user.save
assert !@user.valid?
end
那个测试不会通过。我也试过,assert !@user.save.valid?
认为它会在保存时失败,但这也不起作用。
我做错了什么?
答案 0 :(得分:3)
您应该检查dup_user
是否有效。
test "email address uniqueness regardless of case" do
dup_user = User.new(name: "First Last", email: @user.email.upcase)
assert ! dup_user.valid?
end
答案 1 :(得分:1)
这是我最终做的事情:
在我的user.rb模型中,我有:
validates :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
我有以下测试和设置:
def setup
@user = User.new(name: "John Doe", email: "example@example.com",
password: "foobar", password_confirmation: "foobar")
@user.save
end
test "email address uniqueness regardless of case" do
dup_user = User.new(name: "First Last", email: @user.email.upcase)
assert !dup_user.save
end
简而言之,我所做的是将用户对象传递给true,而不是保存片段。如果你做object.save.valid?你不是在询问保存是否有效,而是你的询问是object.save返回了一个有效的对象,object.save返回的是false(而不是对象)。