2010-03-29 33 views
0

我認爲早該是很整潔,但我不明白的是爲什麼有些宏的存在,如:shoulda的一些宏有什麼意義?

  • should_validate_uniqueness_of :title
  • should_validate_presence_of :body, :message => /wtf/
  • should_validate_presence_of :title
  • should_validate_numericality_of :user_id

我對測試比較陌生,但這些服務的目的是什麼?它們幾乎是模型中發生的相同驗證的精確鏡像。例如,你進入你的模型並寫validates_uniqueness_of :title,然後寫一個測試,說should_validate_uniqueness_of :title你完成了什麼?

回答

1

這是誰想要完整的防禦測試覆蓋率,如人,如果有人打破應用程序的任何功能,測試將失敗。

1

我還沒有用過shoulda,我不知道作者到底在想什麼,但是多年來我寫了很多Ruby單元測試,所以我會猜測。

程序的某些部分可以在RoR中以聲明方式聲明,如validate_uniqueness_of。其他的東西你寫的更復雜的方法來實現。一個班級通常由兩個組合而成。請注意,後者通常比前者花費更長的時間(在時間和空間上)。因此,如果有人有興趣爲類設計草圖,可能是因爲人們對「TDD」感到興奮,可能會寫一個測試,聲明類需要支持的所有東西:標題是唯一的,用戶標識是梅森總理,無論如何。這寫起來簡單快捷。然後人們會爲所有這些編寫代碼,瞭解班級的合同,並能夠以簡明的形式看到它。

這只是一個猜測。

+0

然後,當某個白癡刪除了標題唯一性並且違約時,測試會失敗,然後你就會知道它被破壞了(或者合約被破壞了,在這種情況下,調用它的任何函數都可能需要更改)。 – Brian 2010-03-29 16:57:14