goosys/Fuel-Tasks-Testontest: The package for FuelPHP
3年前くらいに作ったパッケージなのでよく覚えてないのですが、、
FuelPHP1.7でテストを動かしたいとき、ただoil r test
するとdevelop環境のDBに繋がったような気がします。もちろん、FUEL_ENV=test
を付ければいいだけの話なのですが、当時はついでにmigrationも初期化してもらいたいようなテストの書き方だったのでパッケージにしていたような気がします。
使い方はこんな感じです。
oil r testontest
oil r testontest --group=Model
oil r testontest --group=AppModel
これを実行すると、本当のテストを実行する前に、以下の前処理を行います。
-
Fuel::$env
にtestをセット(Configの再ロードまではしません) - テスト環境のDBを
migrate:down
(全削除) - テスト環境のDBを
migrate
(初期化)
実装
tasks/testontest.php
namespace Fuel\Tasks;
/**
* テスト環境でテストを実行
*/
class Testontest {
public static function run()
{
\Fuel::$env = \Fuel::TEST;
$argv = self::_trim( $_SERVER['argv'] );
self::init();
\Oil\Command::init( array_merge( array('oil','test'), $argv ) );
}
protected static function init()
{
\Package::load('oil');
ob_start();
$_SERVER['argv'] = array('oil','r','migrate:down','--version=0');
\Cli::set_option('version',0);
\Oil\Command::init( $_SERVER['argv'] );
$_SERVER['argv'] = array('oil','r','migrate');
\Cli::set_option('version',null);
\Oil\Command::init( $_SERVER['argv'] );
ob_end_clean();
}