LoginSignup
1

More than 5 years have passed since last update.

PHPUnit の拡張 DBUnitで初期データ等の扱いについて

Last updated at Posted at 2015-12-22

PHPUnitで考察中。

デフォルトで共通にデータを入れたい部分の考えがあり。そのデータを外部ファイルで読み込む形にしました。ただし、xmlやymlで読み込むのでなく、配列で定義して読む感じで行こうかと思ってます。これはマジックナンバーのお話が記事にあり同感だなと思いそうしました。

まだ試してないですがソースを以下のような感じで書いてみようかと・・・
$_dataで配列に読み込むファイルを定義するとそのデータをマージしてデータとして登録するような感じにする想定です。

class TestsBase extends \PHPUnit_Extensions_Database_TestCase {
    protected $_data    = array();
    protected function getConnection() {
        $db = \Database_Connection::instance();
        return $this->createDefaultDBConnection($db->connection(), 'xxxx');
    }

    protected function getDataSet() {
        $work   = array();
        foreach($this->_data    as $data) {
            $work   = array_merge($work,include(APPPATH."/tests/fixture".$data));
        }
        return $this->createArrayDataSet($work);
    }
} 

上記のクラスを継承して継承元で以下のように定義すれば読まれるかなぁと思ってます。

class Test_XXXXXXX extends TestsBase {
    /**
     * データベース初期値
     */
    protected $_data    = array(
            "/file1.php"
        ,   "/file2.php"
    );

file1.phpにはテーブル毎のデータを格納しとこうかと。こうすれば組み合わせで読み込むの変更できるかなーっと思ってます。うまくいくかなぁ・・・

file1.php
return [
    'table名'  => [
        [
            'id'    =>  1
        ,   'nname' =>  '名前1'
        ]

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
1