LoginSignup
1
0

More than 1 year has passed since last update.

【RSpec】テストコードはループを使わない方がベター

Posted at

なぜループ処理を使わない方がいいのか

テストコードは仕様がひと目でわかることが大事なため、可読性が下がるループはしない方がベター

  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

さいごに

記事の中で伊藤さんがおっしゃっていた言葉が印象的だった。

何事も機械的に適用しない。目的を考えて最適な選択肢を選ぶ

コードの書き方に絶対はなく、一個人がより良いと思う方を自分で考えて自分なりの信念を持って選択していくことが大事だと思う。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0