LoginSignup
2
2

More than 5 years have passed since last update.

FuelPHPのテストをテスト環境で実施するパッケージ「Fuel-Tasks-Testontest」

Last updated at Posted at 2016-03-10

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

これを実行すると、本当のテストを実行する前に、以下の前処理を行います。

  1. Fuel::$envにtestをセット(Configの再ロードまではしません)
  2. テスト環境のDBをmigrate:down (全削除)
  3. テスト環境の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();

    }
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2