Paytner Tech Blog

ペイトナーのテックブログです

新規参画でも安心!RSpecで仕様をサクッと把握する方法

はじめに

こんにちは!ペイトナーでRailsエンジニアをやってる坂東です。 最近はRSpecでテストをたくさん書いています!

ペイトナーではテスト仕様書を書く代わりに、RSpecのテスト自体をテスト仕様書としています。 具体的には、ステークホルダー要求からRSpecのテストを記載しています。

ただ、テスト仕様以外の情報も含まれるため、テスト仕様書としては読みづらい問題があります。 しかし最近、RSpecを--dry-runオプションを付けて実行すると、テスト仕様以外の情報が含まれずに出力されることを知りました。 余計な情報がなくテスト仕様だけ確認できるため、新規参画時のキャッチアップが効率的になるなーと思いました。

そこで今回、私がオススメしたい使い方の一例をご紹介します。 この記事を読んで、皆さんもローカル環境でRSpecを--dry-runオプションを付けて実行したくなると嬉しいです!

--dry-run オプションって何?

RSpec実行時に --dry-run オプションをつけると、テストは実行されず、テストケースの一覧を出力してくれます。

--dry-run option - Command line - RSpec Core - Relish

出力例

$ bundle exec rspec --dry-run
require 'rails_helper'

RSpec.describe User, type: :model do

  # ageが20以上の場合はtrue, 19以下の場合はfalseを返すようなインスタンスメソッド
  describe '#adult?' do
    context 'ageが20以上の場合' do
      it 'trueが返ってくること' do
        expect(User.adult?).to be_truthy
      end
    end
    
    context 'ageが19以下の場合' do
      it 'falseが返ってくること' do
        expect(User.adult?).to be_falsy
      end
    end
  end
end

出力結果は以下のようになります

#adult?
    when ageが20以上の場合
        trueが返ってくること
    when ageが19以下の場合
        falseが返ってくること

どう便利なの?

--dry-runオプションをつけて実行すると上述のように出力されることは分かりました。では、何がありがたいのでしょうか?

一言でいうと、「手軽にテスト仕様を把握できる」ことが最大のメリットだと思います。

describe, context, itが1つの文章となり、出力結果がテスト仕様書になります。テスト仕様書として出力されると、たとえば新規でPJに参画したときなど、--dry-runオプションをつけてRSpecを実行すればさくっとプロジェクト全体のテスト仕様を把握できます。

今回このオプションの使い方を教えてくださったエンジニアの方は実際そういった使い方をしているそうです。

逆にいうと、describe, context, itの説明が自然な文章になるように書きます。 そうすればdry-run 出力する場合も、普通にテストコードを読む場合も、読み手にとって理解しやすいコードになります。

まとめ

--dry-runの便利なポイントがイメージできましたか?新規参画時にはドメイン知識やテスト仕様のキャッチアップに苦労します。 --dry-runを活用すればテスト仕様のキャッチアップ効率化に繋がります。(もちろん、RSpecでテストが書かれていることが前提ですが!)

この記事を読んでくださった皆さんも、積極的にテストを書いて、スムーズなプロジェクト参画ができる環境を整えましょう!

終わりに

最後まで読んでいただきありがとうございました!!!

ペイトナーに少しでも興味を持っていただけましたら是非、ペイトナー 採用情報 をご覧ください!!

現在ペイトナーでは、以下ポジション積極採用中です!!!

  • リードエンジニア

paytner.co.jp

参考