RubyMine 2026.1 Help

RSpec

RSpec(英語) は、Ruby/Rails アプリケーションをテストするための一般的なビヘイビア駆動開発 (BDD) フレームワークです。 RubyMine には多数の RSpec サポート機能があり、テストの実行、コーディング支援、ナビゲーション、リファクタリングなどを利用できます。

RSpec サポートを有効にする

  1. rspec-rails gem を Gemfile に追加します。

  2. Ctrl を 2 回押して、 なんでも実行 ポップアップを開きます。 rails generate rspec:install コマンドを使用して RSpec を開始し、必要なファイルとディレクトリを作成します。

  1. rspec gem を Gemfile に追加します。

  2. Ctrl を 2 回押して、 なんでも実行 ポップアップを開きます。 rspec --init コマンドを使用して RSpec を開始し、必要なファイルとディレクトリを作成します。

RSpec テストを作成する

RubyMine は、Rspec テストを作成する複数の方法を提供します。 専用のテンプレートから RSpec テストを作成したりテストが必要なクラスから生成したり、Rails アプリケーションを開発している場合は フレームワーク固有の Rails ジェネレーターを使用するから生成したりできます。

テンプレートから RSpec テストを作成する

  1. 次のいずれかを実行してください:

    • Project ツールウィンドウ (Alt+1) で、新しいファイルを作成したい ディレクトリ を選択し、メインメニューから ファイル | 新規 を選択します。

    • ディレクトリ を右クリックし、コンテキストメニューから 新規 を選択します。

    • ディレクトリ を選択し、 Alt+Insert を押します。

  2. リストから Ruby テスト を選択し、 Enter を押します。

  3. 新しい Ruby テスト ポップアップで、 RSpec を選択し、記述されているクラス名を指定して、 Enter を押します。

    新しい RSpec テストの作成

    RubyMine は、初期コンテンツでテストファイルを作成し、エディターで開きます。 このファイルをテンプレートとして使用し、必要なコードを追加します。

    RSpec テンプレートエディター

テスト対象から RSpec テストを作成する

  1. エディターで必要なクラスを開きます。

  2. 移動 | テスト に移動するか、 Ctrl+Shift+T を押します。

    対応するテストが存在しない場合、 テストの作成 ポップアップが表示されます。

    テストポップアップを作成する

    このポップアップでは、次のいずれかを選択できます。

    • 新規テストの作成: クラスの新しいテストを作成し、テスト対象へのパスに基づいてディレクトリ構造を複製します。

    • 実行 'rails generate': Rails ジェネレーターを使用して、クラスの新しいテストを生成します。

  3. 新規テストの作成 オプションを選択してください。

  4. 宛先ディレクトリの選択 ダイアログで、 spec フォルダーを選択し、 OKです。 をクリックします。

    宛先ディレクトリの選択
  5. 呼び出されたポップアップで、 RSpec テンプレートを選択し、 Enter を押します。

    新しいテストポップアップ

    RubyMine は、必要なディレクトリに新しい RSpec テストを作成し、テスト対象へのパスに基づいてディレクトリ構造を複製します。 例: モデルテストを作成している場合、テストは spec/models ディレクトリに保存されます。

Rails ジェネレーターを使用して RSpec テストを作成する

  1. ツール | Rails ジェネレーターの実行 (Ctrl+Alt+G) に進みます。

  2. 呼び出されたポップアップで、必要なジェネレーター名の入力を開始します。 例: RSpec モデルテストを作成するには、 rspec:model と入力してから rails g rspec:model を選択します。 Enter を押します。

    新しい RSpec モデルテストを作成する
  3. ジェネレーターの引数を指定します。 例: ユーザー モデルの場合、引数として user を渡します。 OKです。 をクリックしてください。

    新しい RSpec:model を追加

コード補完

RubyMine は、RSpec ファイル内のクラス名、変数、メソッド、共有の例やコンテキストなどにコード補完を提供します。

RSpec ファイルのコード補完

ナビゲーション

テスト対象に移動する

  • Ctrl+Shift+T を押すか、メインメニューから 移動 | テスト対象 を選択すると、RSpec テストからそのテスト対象にすばやく移動できます。

宣言または使用箇所に移動

RubyMine は、ファクトリ、フィクスチャ、共有例、テストで使用される共有コンテキストの宣言と使用間のナビゲーションをサポートします。

  • 次のいずれかを実行してください:

    • RSpec テストの目的のシンボルにキャレットを置き、 Ctrl+B を押します。

    • または Ctrl+Click を利用します: Ctrl を押しながらシンボルの上にマウスカーソルを合わせます。 シンボルがハイパーリンクに変わると、宣言がツールチップに表示されます。 キーを離さずハイパーリンクをクリックすると、エディターで宣言が開きます。

RSpec テストを実行する

RubyMine を使用すると、指定したフォルダーやファイルから個別または全ての RSpec テストを実行できます。 Rake タスクを使用してテストを実行することもできます。

フォルダーから複数の RSpec テストを実行する

  • プロジェクト ビューで、目的のフォルダーを右クリックし、 実行 'All features in ...' を選択します。

    プロジェクトビューからテストを実行する

エディターから RSpec テストを実行する

  • 必要な RSpec ファイルを開き、実行するテストの横にある ガターアイコンをクリックします。

  • または、目的のテストにキャレットを置き、 Alt+Enter を押し、必要な実行アクションを選択して、 Enter を押します。

  • 記述されたテストサブジェクトに関連するすべてのテストを実行する場合は、ファイル内の describe メソッドの横にある ガターアイコンをクリックし、 実行 'RSpec: ...' を選択します。

  • ガターアイコンで状態を示す 実行テストアイコン (成功したテスト用)または the Rerun the Run button (失敗したテスト用)を使って、特定のテストを再実行できます。

  • 共有例を実行する際、RubyMine はこの例を実行するためのコンテキスト選択を提案します。 目的の共有例の宣言の横にある ガターアイコンをクリックし、 実行 'RSpec: ...' を選択します。 表示される サンプルグループの実行​​ ポップアップで、共有された例を実行するために必要なコンテキストを選択します。

Rake タスクを使用して RSpec テストを実行する

  • Ctrl を 2 回押して、 Run Anything ポップアップを呼び出します。 必要なタスク名 (rake spec で始まります) の入力を開始し、リストから選択して Enter を押します。

    Rake を使用して RSpec を実行する

コンテキストメニューやエディターから RSpec テストを実行すると、RubyMine は対応する RSpec 一時構成 を自動作成し、保存できます。 必要に応じて、事前定義されたテンプレートから 手動で実行 / デバッグ構成 を作成できます。

詳細については、 実行 / デバッグ構成: RSpec を参照してください。

RSpec 'let' を抽出するリファクタリング

RSpec 'let' を抽出するリファクタリングにより、指定されたコードフラグメントをメモ化されたヘルパーメソッドに抽出できます。 これを行うには、次の手順を実行します。

  1. スペックファイルで、必要なコードフラグメントを選択し、メインメニューから リファクタリング | 抽出 / 導入 | RSpec 'let' ⌘ ⇧ L を選択します。

  2. ヘルパーメソッドの目的の名前を指定し、 Enter を押します。

  3. コード箇所が複数見つかった場合、RubyMine はそれらをコード編集ヘルパーメソッド呼び出しに置き換えることを提案します。

    メソッドの抽出​

    見つかった出現箇所を置き換えるには、 はい をクリックします。 選択した出現箇所のみを置換する場合は、 ノー をクリックします。

サンプル

describe "GetTime" do it "gets the same time" do puts Time.now sleep(3) puts Time.now end end
describe "GetTime" do let(:current_time) { Time.now } it "gets the same time" do puts current_time sleep(3) puts current_time end end
2026 年 6 月 2 日