PhpStorm 2020.3 ヘルプ

PHPSpec

PhpStorm を使用すると、PHPSpec ツールセットを使用して仕様を実行することで、動作駆動型開発を実践できます。

始める前に

ローカル PHP インタープリターを構成するおよびリモート PHP インタープリターの構成の説明に従って、PHP インタープリターが PHP ページの PhpStorm に設定されていることを確認してください。

Composer と一緒に PHPSpec をインストールする

開始する前に、Composer がマシンにインストールされ、Composer 依存関係マネージャーに従って現在のプロジェクトで初期化されていることを確認してください。

  1. composer.json 内で、phpspec / phpspec 依存関係レコードを require または require-dev セクションに追加します。 Ctrl+Space を押して、パッケージ名とバージョンのコード補完を取得します。

  2. 以下のいずれか 1 つを実行します:

    • エディターパネルの上部にあるインストールショートカットリンクをクリックします。

    • インストールされていない Composer パッケージインスペクションが有効になっている場合、PhpStorm は、現在インストールされていない宣言済みの依存関係をハイライトします。 Alt+Enter を押して、特定の依存関係をインストールするか、すべての依存関係を一度にインストールするかを選択します。

PHPSpec 公式サイト(英語)からの PHPSpec のインストールの詳細を参照してください。

composer.json エディターガターのパッケージレコードの横にあるthe Settings/Preferences buttonをクリックして、対応する設定 / 環境設定ページにジャンプし、PHPSpec を手動で構成します

Gutter icon for phpspec settings in composer.json

PHPSpec を PhpStorm プロジェクトと統合する

ローカルの PHP インタープリターを使用する場合、PhpStorm は Codeception の初期構成を自動的に実行します。リモート PHP インタープリターの場合、手動の Codeception 構成が必要です。

PHPSpec を自動的に設定する

  1. phpspec.yml または phpspec.yml.dist 構成ファイルをプロジェクトルートに保存します。

  2. Composer と一緒に PHPSpec をインストールします

PhpStorm はテストフレームワークページおよび PHPSpec 実行 / デバッグ構成上にローカルフレームワーク構成を作成します。

PHPSpec を手動で設定する

  1. 設定 / 環境設定ダイアログ Ctrl+Alt+S で、言語およびフレームワークノードを展開し、PHPテストフレームワークを選択します。

    開いているテストフレームワークページの中央ペインでAdd iconをクリックし、リストから設定タイプを選択します。

    ps_settings_php_test_frameworks.png
    • ローカル設定では、デフォルトのプロジェクト PHP インタープリターが使用されます。詳細はデフォルトのプロジェクト CLI インタープリターを参照してください。

    • ZZC1C PHP インタープリターで PHPSpec を使用するには、表示されたダイアログで設定を 1 つ選択します:

      ps_settings_php_test_frameworks_phpspec_choose_php_interpreter.png
  2. PHPSpec 実行ファイルへのパスフィールドで、phpspec の場所を指定します。PHPSpec は必ずしも現在のプロジェクトルートにインストールする必要はありません。PHPSpec ディレクトリまたは phar ファイルへのパスフィールドの横にあるthe Reload buttonをクリックします。PhpStorm は PHPSpec のバージョンを検出し、それをフィールドに表示します。

    PHPSpec へのパスがローカルインタープリターに指定されていない場合、PhpStorm は PHPSpec を完全にサポートしません。たとえば、コード補完の提案は表示されず、参照も解決されません。

  3. テストランナー領域では、仕様の起動と実行に使用する構成 YML ファイルを指定します。

    デフォルトでは、PHPSpec はプロジェクトルートフォルダー内の phpspec.yml または phpspec.yml.dist 設定ファイルを探します。カスタム構成ファイルを指定できます。

    • デフォルト構成ファイルチェックボックスをオフにして、PHPSpec にプロジェクトルートフォルダーの phpspec.yml または phpspec.yml.dist 設定ファイルを使用させます。そのようなファイルが見つからない場合、テストの実行は失敗します。構成ファイルを明示的に指定する方が信頼性が高くなります。

    • デフォルト構成ファイルチェックボックスを選択して、独自の YML 設定ファイルを指定します。このファイルは後ですべての PHPSpec 実行 / デバッグ構成でデフォルトとして使用されます。

      このフィールドで、使用する構成ファイルの場所を指定します。手動でパスを入力するか、the Browse buttonをクリックして表示されるダイアログでファイルを選択します。

    ローカル構成では、接頭辞 ('spec_prefix' ):読み取り専用フィールドに、仕様のネームスペースプレフィックスが表示されます。PhpStorm は、デフォルト構成ファイルフィールドで指定された構成ファイルから spec_prefix を検出します。デフォルト値は spec です。詳細は PHPSpec の設定: PSR-4(英語)PHPSpec の設定: 仕様とソースの場所(英語)を参照してください。

クラスの PHPSpec テストを生成する

  1. 次のいずれかを実行して新しい PHP テストを作成するダイアログを開きます。

    • メインメニューからファイル | 新規を選択します。次に、コンテキストメニューから PHP テスト | PHPSpec の仕様を選択します。

    • プロジェクトツールウィンドウで、 Alt+Insert を押すか、テストする PHP クラスを右クリックし、新規 | PHP テスト | PHPSpec の仕様を選択します。

    • テストする PHP クラスのエディターで、クラスの定義にキャレットを配置します。次に、 Alt+Enter を押して、ポップアップメニューから新規テストの作成を選択します。このようにして、単一の PHP ファイル内の複数のクラス間で定義された PHP クラスのテストを生成できます。

      特定のメソッドのテストを作成するには、メソッド宣言内にキャレットを配置します。選択したメソッドは、新しい PHP テストを作成するダイアログのメソッドリストで自動的に選択されます。

  2. 新しい PHP テストを作成するダイアログが開きます。

    the Create new phpspec test dialog

    生成されたテストのパラメーターを提供する:

    • テストファイルテンプレート、つまり PhpStorm がテストクラスを生成するテンプレート。PHPSpecテストファイルテンプレートリストで選択されていることを確認してください。

    • テストクラスの名前。PhpStorm は、本番クラス名から自動的に名前を <production class>Spec.php として作成します。

    • テストクラスファイルのフォルダー。本番クラスを含むディレクトリとネームスペース、構成済みのテストソースルートとその psr-4 パッケージプレフィックス、または phpspec.yml(英語) 構成ファイルで指定された src_path 値に基づいて自動的に提案されます。自動フォルダー提案が正しく機能するためには、テストスイートと本番クラスの名前空間が一致する必要があることに注意してください。

      別のフォルダーを指定するには、ディレクトリフィールドの横にあるthe Browse buttonをクリックし、該当するフォルダーを選択します。

    • テストクラスが属するネームスペース。本番クラスの含まれるディレクトリとネームスペース、構成されたテストソースルートとその psr-4 パッケージプレフィックス、または phpspec.yml(英語) 構成ファイルで指定された spec_prefix および namespace 値に基づいて自動的に提案されます。

    • テストメソッドスタブを生成する本番クラスメソッド。必要な本番クラスメソッドの横にあるチェックボックスを選択します。親クラスから継承されたメソッドを含めるには、継承メソッドを表示チェックボックスを選択します。

      PhpStorm はテストメソッドの名前を test<production method> として自動的に作成します。テストメソッドスタブの生成に使用されるコードテンプレートは、ファイルおよびコードテンプレート設定ページのコードタブでカスタマイズできます。

テストが作成されたら、移動 | テスト対象に移動を選択して本番クラスに戻ることができます。詳細については、テストとそのテスト対象の間を移動するを参照してください。

PHPSpec テストの実行とデバッグ

PHPSpec の仕様の作成方法については、PHPSpec のドキュメント(英語)を参照してください。テストを実行またはデバッグするには、次のいずれかを実行します。

PHPSpec テストを実行またはデバッグする

  • プロジェクトツールウィンドウで、テストを実行するファイルまたはフォルダーを選択し、選択したコンテキストメニューから実行 '<file or folder>' またはデバッグ '<file or folder>' を選択します。

    ps_test_frameworks_phpspec_launch_tests.png

    PhpStorm はデフォルトの実行構成を生成し、実行 / デバッグテストセッションを開始します。

自動的に生成されたデフォルト設定を保存する

  • テストセッションが終了したら、ファイルまたはフォルダーのコンテキストメニューから保存 <default_test_configuration_name> を選択します。

以前に保存された実行 / デバッグ構成によってテストを実行またはデバッグする

  • ツールバーのリストから必要な PHPSpec 設定を選択し、the Run buttonまたはthe Debug buttonをクリックします。

カスタム実行 / デバッグ構成を作成する

  1. プロジェクトツールウィンドウで、実行するテストが含まれているファイルまたはフォルダーを選択し、コンテキストメニューから実行構成の作成を選択します。または、メインメニューから実行 | 構成の編集を選択してからAdd iconをクリックし、リストから PHPSpec を選択します。

  2. 開く PHPSpec ダイアログで、実行するシナリオを指定し、使用する PHP インタープリターを選択し、PHP 実行可能ファイルに渡すオプションと引数を指定してその動作をカスタマイズします。

テスト結果を監視する

PhpStorm は実行ツールウィンドウテストランナータブにおけるテスト実行結果を示します。

ps_test_result_phpspec.png

このタブは大きく 2 つのエリアに分かれています。

  • 左側の領域では、すべての単体テストをドリルダウンして、成功したテストと失敗したテストを確認できます。テストのフィルタリング、結果のエクスポート、コンテキストメニューコマンドを使用して特定のテストを実行したりソースコードに移動したりできます。

  • 右側の領域には、生の PHPSpec 出力が表示されます。

関連ページ:

ローカル PHP インタープリターを構成する

ローカル PHP インタープリターは、リモート PHP インタープリターの反対側にコンピューターにインストールされた PHP エンジンであり、リモートホストまたはVagrantインスタンスにセットアップされた仮想環境にインストールできます。リモート PHP インタープリターの構成を参照してください。...

リモート PHP インタープリターの構成

リモート PHP インタープリターという用語は、リモートホストまたは仮想環境にインストールされた PHP エンジンを意味します。リモート PHP インタープリターという用語は、コンピューターにインストールされているローカル PHP インタープリターの反対語として使用されます。ローカル PHP インタ...

Composer 依存関係マネージャー

PhpStorm はComposer依存関係マネージャーと統合されます。これにより、Packagistまたはカスタムリポジトリからのパッケージをプロジェクトの依存関係として宣言し、IDE から管理できます。PhpStorm は、composer.jsonを操作するための包括的なコーディング支援と、一...

テストフレームワーク

このページを使用して、PHP 固有のテストフレームワークと現在のプロジェクトの PhpStorm を統合します。PhpStorm を使用すると、PHPUnit、Behat、Codeception、PHPSpecテストを実行およびデバッグできます。ページは 2 つのペインで構成されています。中央ペイン...

コンテンツルート内のフォルダーの構成

コンテンツルート内では、PhpStormはソースコードを含むフォルダーと、検索、解析、監視などの際に無視されるフォルダーを区別できます。さまざまなタイプのフォルダーを区別するには、コンテンツルートのフォルダーをソースフォルダーまたは除外フォルダーとしてマークします。コンテンツルート内では、PhpSt...

プロジェクトで PHP 名前空間を構成する

PhpStorm には、プロジェクトルートフォルダーがパッケージおよび名前空間のルートでもあることを指定する構成可能な規則が付属しています。つまり、プロジェクトのルートフォルダーはデフォルトでソースとしてマークされ、そに作成されるすべてのディレクトリは個別のネームスペースと見なされます。これは、オー...