Fuel PHPでユニットテスト

環境

Fuel PHPとは??

インストール

// Install Fuel PHP
% curl get.fuelphp.com/oil | sh

プロジェクト作成

% mkdir ~/Sites
% cd Sites/

// Create project for Testing
% oil create blog (project_name)
Cloning into './blog'...
remote: Counting objects: 15289, done.
remote: Total 15289 (delta 0), reused 0 (delta 0), pack-reused 15289
Receiving objects: 100% (15289/15289), 5.34 MiB | 581.00 KiB/s, done.
Resolving deltas: 100% (6149/6149), done.
Checking connectivity... done.
Already on '1.7/master'
Your branch is up-to-date with 'origin/1.7/master'.
Updating to version 9fb2d4f2d642a0749decb41bc2fe4be2bf8bef7a.
    Downloading: 100%
Use composer self-update --rollback to return to version e77435cd0c984e2031d915a6b42648e7b284dd5c
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing composer/installers (v1.0.21)
    Failed to download composer/installers from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  - Installing composer/installers (v1.0.21)
    Cloning d64e23fce42a4063d63262b19b8e7c0f3b5e4c45

  - Installing fuel/docs (dev-1.7/master 473174d)
    Cloning 473174da2cf503c60d4a9935b71acfc31f0906d0

  - Installing fuel/core (dev-1.7/master e8c221a)
    Cloning e8c221af4cb685aefef20cc50a70f369eb37cb95

  - Installing fuel/auth (dev-1.7/master aa9bd2e)
    Cloning aa9bd2e5104026814ff516aacf03258f62a94a55

  - Installing fuel/email (dev-1.7/master 8fbf378)
    Cloning 8fbf378d74bac170a96cad96ba0aed77e319a865

  - Installing fuel/oil (dev-1.7/master ea37c3a)
    Cloning ea37c3a7fe8675fb3327327213b2eca55303933a

  - Installing fuel/orm (dev-1.7/master 5e05c30)
    Cloning 5e05c3068562548657fea69850a23b23f65a5545

  - Installing fuel/parser (dev-1.7/master 0cacd10)
    Cloning 0cacd10d7b1b8f92a0eeddce75c6ba2c0c28112f

  - Installing fuelphp/upload (2.0.2)
    Failed to download fuelphp/upload from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  - Installing fuelphp/upload (2.0.2)
    Cloning b0d4c8df2d7cc64b8b13415d5de0e3aadd8c2004

  - Installing psr/log (1.0.0)
    Failed to download psr/log from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  - Installing psr/log (1.0.0)
    Cloning fe0936ee26643249e916849d48e3a51d5f5e278b

  - Installing monolog/monolog (1.5.0)
    Failed to download monolog/monolog from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  - Installing monolog/monolog (1.5.0)
    Cloning 583618d5cd2115a52101694aca87afb182b3e567

  - Installing michelf/php-markdown (1.4.0)
    Failed to download michelf/php-markdown from dist: You must enable the openssl extension to download files via https
    Now trying to download from source
  - Installing michelf/php-markdown (1.4.0)
    Cloning 96d8150406f67e683ef4acc09fef91785fef1266

monolog/monolog suggests installing mlehner/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
Writing lock file
Generating autoload files
    Made writable: /Users/developer/Sites/blog/fuel/app/cache
    Made writable: /Users/developer/Sites/blog/fuel/app/logs
    Made writable: /Users/developer/Sites/blog/fuel/app/tmp
    Made writable: /Users/developer/Sites/blog/fuel/app/config

%cd blog
% php oil -v                                                                      (1.7/master) <U>
Fuel: 1.7.3 running in "development" mode

// Gave authorization for writing
% oil refine install                                                              (1.7/master) <U>
    Made writable: /Users/developer/Sites/blog/fuel/app/cache
    Made writable: /Users/developer/Sites/blog/fuel/app/logs
    Made writable: /Users/developer/Sites/blog/fuel/app/tmp
    Made writable: /Users/developer/Sites/blog/fuel/app/config

oilとは??

  • 特別なパッケージコマンド
  • 素早い開発を楽に実現
  • アプリケーションのテスト補助
  • Tasksを実行

コマンドラインユーティリティ

  • Generate - MVC コンポーネントマイグレーション、スキャフォールドを生成
  • Refine - マイグレートや制作したタスクを実行
  • Package - パッケージのインストール、更新および削除
  • Console - 対話シェルを使ってリアルタイムにコードをテスト
  • Test - PHPUnit テストを実行

Taskとは??

  • コマンドラインから実行 or cron ジョブとしてセットアップされるクラス
  • バックグラウンドプロセス、定期的に行われるタスク、メンテナンスタスクで使用
  • タスクは、コントローラ同様、モデルや他のクラスを呼び出すことが可能

ユニットテスト

PHPUnitのインストール

公式サイトでPHPUnitをインストールする場合

こちらを参照ください。

wgetが使えない場合、こちらを参照ください。

% wget https://phar.phpunit.de/phpunit.phar
--2015-06-08 03:00:43--  https://phar.phpunit.de/phpunit.phar
Resolving phar.phpunit.de (phar.phpunit.de)... 188.94.27.25
Connecting to phar.phpunit.de (phar.phpunit.de)|188.94.27.25|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3125703 (3.0M) [application/octet-stream]
Saving to: ‘phpunit.phar’

phpunit.phar             100%[===================================>]   2.98M   484KB/s   in 13s

2015-06-08 03:00:59 (228 KB/s) - ‘phpunit.phar’ saved [3125703/3125703]

% chmod +x phpunit.phar
% sudo mv phpunit.phar /usr/local/bin/phpunit
% phpunit --version
Macportsを利用してPHPUnitをインストールする場合

wgetが使えない場合、こちらを参照ください。

curlからインストールするため、PHPに付属するcurlからインストールします。

// curlのインストール
% sudo port install php54-curl

// PHPUnitのインストール
% sudo pear install phpunit/PHPUnit

oilコマンドでユニットテストの実行

$ php oil test

設定ファイル

% vi fuel/app/config/config.php



参照

ユニットテスト - 概要 - FuelPHP ドキュメント

Getting Started with PHPUnit – The PHP Testing Framework