なぜループ処理を使わない方がいいのか
テストコードは仕様がひと目でわかることが大事なため、可読性が下がるループはしない方がベター
describe '#format_date_of_birth' do
it '生年月日を和暦で表示すること' do
%w(1977-06-06 1988-06-06 1989-06-06 2016-06-06).each do |date_text|
date = Date.parse(date_text)
person = Person.new('Taro', date)
jp_year = date.year >= 1989 ? "平成#{date.year - 1988}年" : "昭和#{date.year - 1925}年"
expected = "#{jp_year}#{date.month}月#{date.day}日"
expect(person.format_date_of_birth).to eq expected
end
end
end
ただ、テストデータを作成するときだけはループ処理で書いてしまった方が見やすい気がする。
「テストはループ処理を使わない方がいい」という言葉だけだとデータ作成までベタ書きするのかなと勘違いしそうになったので。
(Date.new(2021, 1, 1)..Date.new(2021, 1, 15)).each do |date|
create(:post, date: date, user: user)
end
さいごに
記事の中で伊藤さんがおっしゃっていた言葉が印象的だった。
何事も機械的に適用しない。目的を考えて最適な選択肢を選ぶ
コードの書き方に絶対はなく、一個人がより良いと思う方を自分で考えて自分なりの信念を持って選択していくことが大事だと思う。