RAKSUL TechBlog

ラクスルグループのエンジニアが技術トピックを発信するブログです

RSpecのformatterをクリスマス仕様に

始めに

こんにちは。ハコベルのサービス開発を担当しているマッチングスクラムのtakiです。RAKSUL Advent Calendar 2021 11日目の記事になります。

 

マッチングスクラムは、ハコベルの中でも荷主と運送会社をつなぐ運送マッチングシステムを開発しているスクラムです。運送マッチングシステムとは、優良ドライバーのみをネットワークすることで、低価格で高品質の配送サービスをマッチングするシステムです。

 

また、開発で主に使用する技術は、Ruby、Railsになります。テストコードでは、RSpecを使用しています。今回は、Advent Calendarということですので、formatterをクリスマスらしくカスタマイズする事例をご紹介します。

デモ

まず、デモをお見せします。bundle exec rspec integer_spec.rb --require ./christmas_formatter.rb --format ChristmasFormatter を実行しました。--requireでカスタムフォーマッターが定義されているファイルを選択し、---formatterで、使用するフォーマッターを選択します。

テストが成功した場合、クリスマスツリー、失敗した場合、ロウソク、ペンディングの場合、星を表示しています。

実装方法

ChristmasFormatterの実装は、以下の通りです。

example_passedexample_failedexample_pendingを定義し、RSpec::Core::Formatters.registerで登録しています。

よく使うNotificationの種類は、以下の通りです。

  • start(一連のテストを実行する前に、通知されます)
  • example_passed(テストが成功した時に、通知されます)
  • example_failed(テストが失敗した時に、通知されます)
  • example_pending(実行しようとしたテストが、ペンドされている時に、通知されます)
  • dump_summary(テスト結果の一覧を表示する時に、通知されます)

詳細は Module: RSpec::Core::Formattersを参照してください。

まとめ

RSpecに独自のフォーマッターを追加するのは、記載した通り簡単です。皆様も独自のフォーマッターを定義して、楽しんでみてはいかがでしょうか?

私たちと一緒に物流DXをソフトウェアの力で推進してくださるエンジニアをラクスルでは積極採用中です!ラクスルでは物流以外の分野でも、業界の仕組みやオペレーションの理解を深めつつ開発を進めることを大事にしています。

興味ある方はぜひこちらからご応募ください!

ラクスルのアドベントカレンダー全編はこちらから