Shouldaのテストヘルパーって、モデルの宣言とまったく同じような書き方で、身も蓋も無い。
テスト:
class PrefectureTest > ActiveSupport::TestCase
should_belong_to :region
should_have_many :graves
should_have_many :inquiries
should_have_many :request_for_publishings
should_require_attributes :name, :reading, :roman
should_require_unique_attributes :roman
end
モデル:
class Prefecture > ActiveRecord::Base
belongs_to :region
has_many :graves
has_many :inquiries
has_many :request_for_publishings
validates_presence_of :name, :reading, :roman
validates_uniqueness_of :roman
end
こんなん書いて意味あんのかな?ってちょっと思ったんですが、モデルに少し変更があってそれに気付かず、速攻でテストが通らなくなった。
あー、「強い型付けより強いテスト」ってこれのことか!?
テストがまるで静的型付け言語の型定義みたいだ。
テストを書きまくってる人にとっては、「テストがこれだけなんて心配だ」とそわそわするかもしれない。「強い型付け」なんてこんな程度のもんだ。
「強いテスト」はここからshould … do …と強記していける。
なるほどなー、と今頃思った。
|
追記:最近ではshould have_many(:foos).throughみたいな書き方が主流っぽいです。汎用性を考えると仕方ないけど、個人的には上記の様なまるで型のように見える古い書き方のほうが好き・・・。