Hartl Rails教程:在user_test中备份电子邮件地址

时间:2014-12-10 14:43:32

标签: ruby-on-rails upcase

我大约在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

据我所知,测试无论哪种方式都能正确执行。

1 个答案:

答案 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属性的效果。