Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
8
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

OS X で PhpStorm で Composer 使って CakePHP 2.5 入れてあとテスト

内容

書いてる人

  • 昔 PHP やってて久しぶりに触ったけど(当時使ってたのは Zend) CakePHP はドキュメント読んでチュートリアルやったくらいの初心者
  • 普段は強いていえば python の人なので Composer とか使ったことない

環境的なもの

  • Mac OS X 10.9.4
  • PhpStorm 7.1.3
  • PHP 5.4.24
  • Composer (PhpStormの設定画面でダウンロードしたのでバージョン分からん)
  • PHPUnit 3.7.37
  • CakePHP 2.5.3

PhpStorm で Composer を使ったプロジェクトを作りたい

Composer 自体は PhpStorm の環境設定の PHP -> Composer でダウンロードしておく。

あとは新規プロジェクト作るときのプロジェクトタイプで Composer project を選んで cakephp/cakephp を入れておけばおk。(OSX 10.8/10.9 で mcrypt.so 入れてなくてエラーになる場合は http://topicdesk.com/downloads/mcrypt のパッケージでインストールが楽でした)

あとは yukisov さんの Composerを利用したCakePHP2.4.xの導入手順 を参考にすればきっとなんとかなります。

以下のような composer.json を作って環境設定のとこでこのファイルを指定。以下は yukisov さんのをコピペしてバージョンあげただけですけど repositories とかいるのかよく分かってません。ポイントは PHPUnit を 3.7台にすること。PhpStorm だと PHPUnit4 に対応してないっぽいので。

composer.json
{
    "name": "namwa",
    "repositories": [
        {
            "type": "pear",
            "url": "http://pear.cakephp.org"
        }
    ],
    "require": {
        "cakephp/cakephp": "2.5.3",
    },
    "require-dev": {
        "phpunit/phpunit": "3.7.37",
        "cakephp/debug_kit" : "2.2.*"
    },
    "config": {
        "vendor-dir": "Vendor/"
    }
}

ただこの composer.json の通りにライブラリをインストールする PhpStorm 的な方法がいまいち分からないのでとりあえず Tools -> Composer -> Add dependency... で PHPUnit インストールしたりすれば反映されます(ただ PHPUnit は当然 require-dev から require にうつっちゃう)。もっとまともなやり方多分ありますよねこれ。。素直にコマンドラインでインストールすべきなのかな。

CakePHP のテストを PhpStorm の標準機能で実行したい

ブートストラップというか1つスクリプトをはさまないと自分の使ってるバージョンでは PhpStorm からテストが実行できませんでした。具体的には以下を使いました。

これをプロジェクトの一番上に置きます。上の yukisov さんのやり方に合わせたディレクトリ構造にしてるのでこうなります。

  • プロジェクトのディレクトリ
    • App
      • Test
    • Plugin
    • Vendor
    • cakeunit4phpstorm.php

ただこれだとなんかうまく動かなかったので、定数をセットしている部分についてブラウザから実行した時にデバッグツールバーに表示されるものと合わてみました。cakeunit4phpstorm.php を4行修正します:

# あとは34行目をこうして
    define('APP_DIR', 'App');
# 37行目をこうして
    define('WEBROOT_DIR', 'webroot');
# 40行目をこうして
    define('WWW_ROOT', ROOT . DS . APP_DIR . DS . WEBROOT_DIR . DS);
# 44行目をこう!
        ini_set('include_path', ROOT . DS . 'Vendor' . DS . 'cakephp' . DS . 'cakephp' . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path'));

あとは Run/Debug Configurations で PHPUnit を選び、

設定項目
Directory Appディレクトリへのパス
Test Runner options Test/Case/AllTestsTest.php
Interpreter options -f cakeunit4phpstorm.phpへのパス

を設定すれば PhpStorm でテストが実行できると思います。

終わりに

このポストを書きながら unok さんの一年以上前に書かれた IntelliJ IDEA から cakephp の test を実行する方法(PhpStorm でも多分大丈夫) という記事を見つけました。試してないけど最初からこの記事読めば良かった説…まあ自分のはこういうやり方もありましたということで。。

そして書きながら PhpStorm 8 だと Behat という BDD フレームワークのサポートが入るらしいことを知りました。いい加減 PHPUnit 以外も使ってみないとなあ…

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?