LoginSignup
2

More than 3 years have passed since last update.

個人的に頻繁に使ったRSpec集

Posted at

RSpecを書いているうちに、「これとよく似た比較書いたけどどのプロダクトのどのSpecだっけ?」って探して時間を取られた事があったので、ここに記事としてまとめておきます。未来の自分と他の開発者の方に役立つ事を願って。

エラーログが出力されている事を確認。


it 'エラーログが出力される事' do
    expect(Rails.logger).to receive(:error).with(/code: 400/)
    # 以下、テストしたい処理を書く
end

ポイントとしては

  • expectをitの一番最初に書く。こうしないとログの出力メソッドがreceiveによって捕捉されません。
  • withの中に、含まれていてほしいメッセージを書く。そのまま書くと完全一致にならないとパスしないので、スラッシュで囲むことで、特定のメッセージを含んでいた場合のケースを書くことができます。いわゆる正規表現。

参考にしたサイト

エラーログが出力されていない事を確認。

it 'エラーログが出力されない事' do
    expect(Rails.logger).to receive(:error).exactly(0).times
    # 以下、テストしたい処理を書く
end

先程の例の応用で、「正常に処理が完了するケースの場合はエラーログが出ないはずだ。」も調べたかった。
receiveメソッドにつなぐ形で回数を指定できるので、.exactly(0).timesでメソッドが呼ばれていない事を確かめました。
参考にしたサイト

よくRubyやRailsを書く人からしてみれば「当たり前じゃねぇか!」って言われるかもしれませんが、私がここ最近初めて本格的にRailsを使った開発にアサインされて、戸惑いながらも開発していた時に得たものなので、優しい目で見ていただけますと幸いでございます。
使えそうなものが出てきたら追記していこうと思います。

ありがとうございました。

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
2