0
0

Ruby + Rspec – テスト失敗のエラー時にアフターフック処理して赤文字でカスタムメッセージを標準出力する ( example単位 )

Last updated at Posted at 2023-12-09

after each の中で exception を参照すれば検証失敗エラーのときだけに何らかの処理ができる

通常Rspecはどのように検証が失敗したかを丁寧に表示してくれるが
テストの構成上、標準出力で詳細が分かりづらい場合はアフターフックを仕込んで、何か標準出力させておくとデバッグがしやすいかもしれない

( たとえば Rails の Requestのテストの時に response body を標準出力するなど )

describe 'Test' do
  after(:each) do |example|
    if example.exception
      
      puts "\033[31m" # 赤字開始 - 標準出力で文字色を付ける 

      puts example.full_description # Test It Description
      puts example.description # It Description
      puts example.location # /path/to/spec.rb:15

      puts 'something' # 何か失敗時に見たいものを出力

      puts "\033[0m" # 赤字終了
    end
  end

  it 'It Description' do
    expect(true).to eq false
  end
end

exampleの中身

RSpec::Core::Example のインスタンス

puts example
# <RSpec::Core::Example "is expected to eq false">

example.location

失敗したファイル・ファイル行数が分かる

例:

/path/to/spec.rb:15

example.full_description

description や it の説明を合わせたフルの説明が入るようだ

example.description

it の説明部分が入るようだ

example.exception の中身

よく見るRspecの実行結果(失敗時)が入っているようだ

puts example.exception
# expected: false
#      got: true
#
# (compared using ==)
#
# Diff:
# @@ -1 +1 @@
# -false
# +true
#
# => nil

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

0
0
0

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
0
0