テストはドキュメントのように書く

今日も今日とてRspecについての勉強まとめですよ!良いじゃないですか実務で実際にやってるんだから!

やっぱり悩むテストシナリオ

メソッドのテストを実装していたけど、どうにもしっくりこない感じがしていた。理由としてはテストシナリオが上手くかけていないことが挙げられます。

参考文献①参考文献②参考文献③、Ruby界隈ではめちゃんこ有名人のあの方の記事を読み漁った。

記事を読み漁って、どこが違うのか自分の中で分析

contextちゃんと書いたほうが良い

今日書いた自分のテストコードが以下のような感じ

descrive 'メソッド名' do
  #ここでcontextで分けるべき処理を間に挟んでる
  it '〇〇すること' do
  end
end

contextで場合分けの文章を書いていないせいで読みづらくなっている。

ドキュメントのようにテストシナリオを書く

参考記事の中でおっしゃっていたことなのだが、自分の中でめっちゃ響いた。ドキュメントのようにテストシナリオを書くことで可読性も上がり、この機能、引いてはWebサイト全体がどのような仕様になっているのかが、読んでる人に伝わるようになる。

descrive 'メソッド名' do
  context '〇〇の場合' do
    # 場合分け処理
    it '〇〇すること' do
    end
  end
end

「まだ見ぬこれからこのプロジェクトに参加する人」に向けてテストシナリオを書くようにすれば、自然と仕様を網羅できる。

テストの基本

descrive, context, it についてはわかった。

今回はAAAについて学習した。

Arrange(準備), Act(実行), Assert(検証)

上記の3つを左から順番にコード記載していくのが基本。理由としては順番に記載しておけば上から順にコード読めるから。ここでもドキュメントのように書くことを意識。

descrive 'テスト対象' do
  # Arrange
  # テストデータを用意
  let(:hoge) { create(:hoge) }
  
  context '〇〇の場合' do
    # Arrange
    # ここで用意することもある
      let(:huga) { create(:huga) }

    it '〇〇すること' do
      # Act
      # テストシナリオになるように実行
      huga.save!
      
      # Assert
      expect(huga.name).to eq hoge.name
    end
  end
end

基本ベースこんな感じかな?

昨日はテストの対象をどう切り分けるべきかを学習。今日ちょっと迷う箇所あったが、自分の中でテスト対象を切り分ける判断ができたので良かった。

テストシナリオについて今日記事で学習したので、この学習した内容を実務に落とし込んでいく!



この記事が気に入ったらサポートをしてみませんか?