Hartl Rails 教程:user_test 中的电子邮件地址大写



我大约完成了 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_useremail属性的效果。

相关内容

最新更新