1

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

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

4

1 回答 1

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

于 2014-12-10T15:03:51.570 回答