我大约在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
据我所知,测试无论哪种方式都能正确执行。
答案 0 :(得分:0)
我对这个教程并不熟悉,但你似乎在问为什么测试没有写成:
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
具有相同的电子邮件地址,满足电子邮件地址应该唯一的测试规范。
测试实际上做的是验证代码是否识别上传的电子邮件与下载的电子邮件相同。在这种情况下,测试中的原始行具有分配email
电子邮件地址的升级版本的duplicate_user
属性的效果。