2012-01-02 118 views
2

有許多測試RoR模型驗證的示例。即使保持測試在多個模型中都是乾的。但是,它不是測試已經測試過的Rails嗎?測試Rails模型驗證

@user = User.make 
@user.name = nil 

@user.should_not be_valid 

是不是測試如果Rails驗證工作?

+0

我不會因爲今天的行爲相同而建議在多個模型中統一測試。每當模型不再像其他模型那樣運行時,展開測試和多個模型之間創建的依賴關係將會非常痛苦。利用一個使基本測試簡明扼要的框架是更好的方法(例如應該如@ wizard-of-ogz所述)。 – Nick 2012-01-02 18:21:17

回答

7

是不是測試,如果Rails的驗證工作?

問題是它測試你的模型驗證名稱的存在。事實上,它也實際上測試了Rails驗證的工作原理,Rspec的工作原理,Ruby的工作原理,操作系統的工作原理,以及物理規則沒有突然改變的事實,這一點並不重要。

+0

謝謝。我知道我可以覆蓋Ruby中任何事物的行爲,並可能違反默認流程。 – 2012-01-09 00:59:35

2

重點是你測試你的模型正在使用驗證。不過,我同意你的看法,即你的例子自己測試驗證,而測試也有些模棱兩可。

如果您使用的是早該寶石,你可以簡單地使用should validate_presence_of(:name)

1

想想你的程序中你調用update_attribute(update_attribute跳過驗證)的方法。調用該方法會使對象處於無效狀態,但數據庫仍會更新。使用有效的?/無效?可以幫助你抓住這種情況。