はじめに
こんにちは!ペイトナーで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でテストが書かれていることが前提ですが!)
この記事を読んでくださった皆さんも、積極的にテストを書いて、スムーズなプロジェクト参画ができる環境を整えましょう!
終わりに
最後まで読んでいただきありがとうございました!!!
ペイトナーに少しでも興味を持っていただけましたら是非、ペイトナー 採用情報 をご覧ください!!
現在ペイトナーでは、以下ポジション積極採用中です!!!
- リードエンジニア