我大约完成了 Rails 教程的一半(太好了,顺便说一句),有一个小问题。 是否有理由使用此测试使用duplicate_user.email = @user.email.upcase
而不是更简洁的duplicate_user.email.upcase
?
这是完整的测试。
test "email addresses should be unique" do
duplicate_user = @user.dup
duplicate_user.email = @user.email.upcase
@user.save
assert_not duplicate_user.valid?
end
据我所知,无论哪种方式,测试都正确执行。
熟悉本教程,但您似乎在问为什么测试不编写为:
test "email addresses should be unique" do
duplicate_user = @user.dup
duplicate_user.email.upcase
@user.save
assert_not duplicate_user.valid?
end
在这种情况下,行duplicate_user.email.upcase
将只返回大写的电子邮件。它不会影响对象上的属性。测试仍然通过,因为duplicate_user
与原始@user
具有相同的电子邮件地址,满足电子邮件地址应该是唯一的测试规范。
测试实际要做的是验证代码是否识别出大写电子邮件与小写电子邮件相同。在这种情况下,测试中的原始行具有将电子邮件地址的升级版本分配给duplicate_user
的email
属性的效果。