【问题标题】:Hartl Rails Tutorial: upcase-ing email address in user_testHartl Rails 教程:在 user_test 中大写电子邮件地址
【发布时间】:2014-12-10 14:43:32
【问题描述】:

我已经完成了 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

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

【问题讨论】:

  • 就像任何编程语言一样,有不止一种方法可以做他可以做的事情duplicate_user.email.upcase!,它会给出相同的结果。他可能想让事情与从给定用户复制信息而不是操纵对象本身的示例保持一致。这只是我对此的想法。
  • 不,这不会改变数据库中的电子邮件。

标签: ruby-on-rails upcase


【解决方案1】:

我不熟悉教程,但您似乎在问为什么测试不写成:

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

【讨论】:

  • 非常感谢,这很有帮助!
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 2019-11-29
  • 1970-01-01
相关资源
最近更新 更多