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 …と強記していける。

なるほどなー、と今頃思った。

BEST SOFTWARE WRITING
  • BEST SOFTWARE WRITING
  • 翔泳社(2008-02-21)
  • 翔泳社
  • (編集)Joel Spolsky
  • (翻訳)青木 靖
  • 定価:¥ 3,129
  • 新品価格:¥ 3,129
  • 中古価格:¥ 2,464
  • ASIN:4798115819

追記:最近ではshould have_many(:foos).throughみたいな書き方が主流っぽいです。汎用性を考えると仕方ないけど、個人的には上記の様なまるで型のように見える古い書き方のほうが好き・・・。

Comments


Option