FuelPHPのユニットテスト時に環境変数で接続するDBを切り替える

  • Pocket
  • このエントリーをはてなブックマークに追加
  • 162 follow us in feedly

まえがき

さて、何をやりたいかというと。

ユニットテスト時にはユニットテスト用のDBを見に行くようにしてあげたい。

『env FUEL_ENV=test php oil コマンド』とすることで、実行時の読み込むconfigファイルきりかえることができるようだけど、『oil test』のときは何故か効かず。app/config/db.phpしか見にってくれなかった。

なんとか自分なりの解釈で期待通りの動きはできるようになったのでメモ

開発環境

  • FuelPHP 1.7

環境に合わせたDBのコンフィグファイル作成

今回は『development』と『test』の環境で実行できるようコンフィグをそれぞれ用意する。

<?php
return array(
    'default' => array(
        'type' => 'mysqli',
        'connection' => array(
            'hostname' => 'localhost',
            'port' => '3306',
            'database' => 'fuel_db',
            'username' => 'root',
            'password' => '',
            'persistent' => false,
            'compress' => false,
        ),
        'identifier' => '`',
        'table_prefix' => '',
        'charset' => 'utf8',
        'enable_cache' => true,
        'profiling' => false,
        'readonly' => false,
    ),
);

<?php
return array(
    'default' => array(
        'type' => 'mysqli',
        'connection' => array(
            'hostname' => 'localhost',
            'port' => '3306',
            'database' => 'fuel_db',
            'username' => 'root',
            'password' => 'hogehoge',
            'persistent' => false,
            'compress' => false,
        ),
        'identifier' => '`',
        'table_prefix' => '',
        'charset' => 'utf8',
        'enable_cache' => true,
        'profiling' => false,
        'readonly' => false,
    ),
);

ちょっとわかりにくいけど、testの環境のDB設定に誤りがあり、MYSQLに接続ができないためテストが失敗する。というものとしておく。

fuel/app/config/db.phpの削除

この『fuel/app/config/db.php』を削除しないと、こっちが側が優先的に読み込まれてしまったので削除します。

rm fuel/app/config/db.php

『fuel/app/phpunit.xml』の作成

『fuel/core/phpunit.xml』をコピーしてきて『fuel/app/phpunit.xml』を作成します。

phpunit.xmlの『FUEL_ENV』のセクションを削除しておきます。

<?xml version="1.0" encoding="UTF-8"?>

<phpunit colors="true" stopOnFailure="false" bootstrap="../core/bootstrap_phpunit.php">
	<php>
		<server name="doc_root" value="../../"/>
		<server name="app_path" value="fuel/app"/>
		<server name="core_path" value="fuel/core"/>
		<server name="package_path" value="fuel/packages"/>
		<server name="vendor_path" value="fuel/vendor"/>
        <!-- <server name="FUEL_ENV" value="test"/> -->
	</php>
	<testsuites>
		<testsuite name="core">
			<directory suffix=".php">../core/tests</directory>
		</testsuite>
		<testsuite name="packages">
			<directory suffix=".php">../packages/*/tests</directory>
		</testsuite>
		<testsuite name="app">
			<directory suffix=".php">../app/tests</directory>
		</testsuite>
	</testsuites>
</phpunit>

環境変数を添えてユニットテストを実行する

さて、以上で準備ができたのでユニットテストを実行します。

development環境では成功

> env FUEL_ENV=development php oil test --group=App          

Tests Running...This may take a few moments.
PHPUnit 3.7.34 by Sebastian Bergmann.

Configuration read from path/to/fuel/app/phpunit.xml

Time: 653 ms, Memory: 15.50Mb

OK (1 test, 1 assertion)

test環境では失敗

keitarou-mba% env FUEL_ENV=test php oil test --group=App                                                                                                                                                                       [master ~/Dropbox/fuelphp/fuelphp_sample_blog]
Tests Running...This may take a few moments.
PHPUnit 3.7.34 by Sebastian Bergmann.

Configuration read from path/to/fuel/app/phpunit.xml

E

Time: 587 ms, Memory: 15.25Mb

There was 1 error:

1) Tests_Sample::test_sample1
Fuel\Core\Database_Exception: No MySQLi Connection

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.
k

あとがき

以上。他にもっと良いやり方。正しいやり方があれば是非!

おすすめ書籍

効率的なWebアプリケーションの作り方 ~PHPによるモダン開発入門
小川 雄大
技術評論社
売り上げランキング: 270,296

関連記事

20130712024231.png20130712024110

初めての自作WordPressプラグイン。Twitterフォローボタンを作ろう。

まえがき Wordpressのプラグインを作ってみよう! とゆう今...

記事を読む

MacにPHP5.5をインストールする

まえがき Macには標準でPHP5.3かなんかがインストールされている...

記事を読む

no image

CentOSにPHP5.5をインストールするメモ

まえがき 表題どおり、何かと最近Linux環境にPHP5.5をこしらえ...

記事を読む

composer-satis-jenkins-github-1composer-satis-jenkins-github-1.png

composer/satic・Github・Jenkinsを使っておれおれpackagistを作る

まえがき さて、ついにゴールデンウィークがやってまいりました。私のGW...

記事を読む

heroku-pukiwiki-1heroku-pukiwiki-1.png

HerokuでWikiページ(PukiWiki)をあっさり作っちゃうの巻

まえがき 今回はHerokuを使ってWikiページを簡単に作っちゃおう...

記事を読む

新着記事

no image

PHPでRubyのirbっぽいインタラクティブなスクリプトが実行できる「boris」

まえがき PHPでもRubyのirbみたいなことがしたくて探してみたと...

記事を読む

2015年の抱負と去年の振り返り〜よちよちWEB業界1年経験して〜

まえがき あけましておめでとうございます。今年もどうぞよろしくお願いし...

記事を読む

Java SE 7 Bronze試験(1Z0-802)を受けてきました

まえがき 以前から少し受けてみたかった試験『Java SE 7 Bro...

記事を読む

HubotでJenkinsのジョブを実行する

まえがき HubotをつかってJenkinsのジョブをじっこうしてみた...

記事を読む

no image

Hubotをforeverでデーモン化する

まえがき 今回はHubotをforeverを使ってデーモン化してみた時...

記事を読む

スポンサーリンク

  • Sorry. No data so far.

PAGE TOP ↑