2016-05-20 39 views

回答

0

電子郵件是爲了使@user的對象無效,因此使測試通過設定爲「空」的字符串。

我當然假設email屬性是User的必填字段。有了這個假設,即使電子郵件地址爲空,如果user仍然有效,測試將會失敗。

+0

但即使沒有名字,你會得到相同的結果嗎?那麼測試的目的是什麼? –

+0

我假定'@ user'對象是一個有效的對象,這意味着它的名字已經被賦值在'@ user'變量中,或者用戶的名字不是必填字段。你的4行代碼留下了很多假設。 –

1

我猜測,這個測試也有存在驗證(presence: true)在用戶模式,爲用戶的電子郵件和name。這就是爲什麼@user.email = " "設置爲空字符串;基於驗證存在條件,用戶現在是無效的。附註:這實際上是在調用空白方法。

是的,你說得對,assert_not @user.valid?assert [email protected]?將返回相同的東西。這條線意味着如果對象爲假,即用戶無效,則assert_not @user.valid?通過。

所以基本上,它說的是,「好了,因爲這傢伙有一個空白(無效)的電子郵件,我們正在測試,以確保他也應該是無效的用戶」。所以測試的目的是確保任何有空白郵件的用戶都不是有效的用戶。

0

此測試的目的是確保User模型的用戶對象無效,除非它具有email屬性集。

要做到這一點,我們故意將的@user實例變量的屬性設置爲" "或空白,從而使@user無效。 現在@user.valid?返回false,因爲你在user.rb文件中的以下行:

validates :email, presence: true 

你絕對說得assert [email protected]?相同assert_not @user.valid?。您可以使用兩者來測試相同的行爲。

相關問題