Rails開発において RSpecでテストコードを書くことは必須です。
しかし、開発初期や機能がまだ未実装の段階で、テストコードを書くべきか迷うことはありませんか?
この記事では、そんなときに役立つ pending メソッドの使い方と、
CI(GitHub Actionsなど)でエラーにせず、スマートに管理する方法を紹介します。
pending を使うと何がいいの?
開発中に「このテストは後で実装したいけど、今はまだ通らない」というケースはよくあります。
例えば、下記のようなテストを書くと…
# posts_spec.rb
require 'rails_helper'
RSpec.describe "posts", type: :request do
it "一覧ページにアクセスできること" do
get posts_path
expect(response).to have_http_status(:ok)
end
end
この状態でまだ posts#index が未実装だと、当然テストは失敗してしまいます。
ここで pending を使うと、こうなります👇
# posts_spec.rb
require 'rails_helper'
RSpec.describe "Posts", type: :request do
pending "実装待ちのためテストスキップ中です"
end
📋 実行結果(例)
ターミナルでRSpecを実行すると、以下のような出力になります:
すると、このテストは実行されず、保留扱い(スキップ)として扱われます。
Pending: (Failures listed here are expected and do not affect your suite's status)
1) Posts 実装待ちのためテストスキップ中です
# Not yet implemented
# ./spec/requests/posts_spec.rb:4
Finished in 0.01234 seconds (files took 0.34567 seconds to load)
1 example, 0 failures, 1 pending
このように テスト自体はスルーされ、CIもグリーンになるので、
「TODOリスト」として保留状態を残しつつ、開発の邪魔をしません。
🧠 注意点とベストプラクティス
・pending はあくまで一時的な保留として使いましょう
→ 実装完了したら、必ず pending を外してテストを書く!
・保留中の理由をメッセージで明示しておくと便利です:
pending "POSTエンドポイントの実装後に追加予定"
🤖 CI(GitHub Actions)でも活用できる!
特にCI環境でのRSpec実行時、未実装のテストがあると red になるのは避けたいもの。
pending を使えば、CIを通しつつ保留状態を残すことができて便利です。
実際、私のプロジェクトでも次のように活用しています👇
# children_spec.rb
require 'rails_helper'
RSpec.describe "Children", type: :request do
pending "Childrenコントローラー実装待ちのためテストスキップ中です"
end
このように書いておくことで、CIでも落ちることなく、進捗管理にも役立っています。
💡まとめ
pending とは?
→RSpecでテストを保留にできる便利メソッド
メリット
→CIが落ちない、未実装の整理、TODOリスト代わりに使える
ベストプラクティス
→理由を明示しておく、忘れずに後でテスト実装する
おわりに
RSpecでのテスト管理がより快適になれば嬉しいです。
他にもCI運用やRSpec活用記事も書いていく予定なので、よければフォローお願いします!
普段の勉強記録や日々の学びはこちらのはてなブログで投稿しています。
技術の基礎から実践まで、わかりやすくまとめているのでぜひチェックしてみてください!
▶︎はてなブログ:育児パパエンジニアの勉強記録
https://taaa-0991.hatenablog.com/
ご質問・ご指摘があれば、コメントやXでお気軽にどうぞ!
👉[@taaa_099]( https://x.com/taaa_099 )