test "email should be present" do
@user.email = " "
assert_not @user.valid?
end
我没有真正得到这个测试,尤其是第2行。我假设是assert_not @ user.valid?与assert!@ user.valid相同?但我想他认为前者更容易阅读。
答案 0 :(得分:1)
我猜测,对于此测试,您的用户模型中还有一个状态验证(presence: true
),用于电子邮件和用户名称。这就是@user.email = " "
设置为空字符串的原因;根据验证状态条件,用户现在无效。旁注:这实际上是在调用空白方法。
是的,你是对的,assert_not @user.valid?
或assert !@user.valid?
会返回相同的内容。这一行的含义是,如果对象为假,assert_not @user.valid?
通过,即用户无效。
所以基本上,它说的是"好吧,因为这个人有一个空白(无效)的电子邮件,我们正在测试以确保他也应该是一个无效的用户"。因此,测试的目的是确保任何拥有空白电子邮件的用户都不是有效用户。
答案 1 :(得分:0)
电子邮件设置为"空"字符串,以使@user
对象无效,从而使测试通过。
我当然假设email
属性是User
的必填字段。有了这个假设,即使电子邮件地址为空,如果user
仍然有效,测试也会失败。
答案 2 :(得分:0)
此测试的目的是确保User
模型的用户对象无效,除非设置了email
属性。
为此,我们故意将email
实例变量的@user
属性设置为" "
,或为空,从而使@user
无效。
现在@user.valid?
返回false,因为user.rb
文件中有以下行:
validates :email, presence: true
你绝对正确地说assert !@user.valid?
与assert_not @user.valid?
相同。您可以使用它们来测试相同的行为。