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

関連記事

converted.png

cakephp2系のちょっとしたメモ

まえがき いままでずっとcakephpの1.3を使って来ましたが、そ...

記事を読む

YAMLをRuby,Python,PHPで使ってみた

まえがき 『YAML』Rubyなんかをやってるとよく見る拡張子・書き...

記事を読む

images-1

PEARライブラリphpDocumentor2を使って楽々ドキュメント作成

まえがき GWも終わって普段の生活に戻り5月病にかかった私ですが、 ...

記事を読む

Screeny Shot 2013-07-13 0.44.12.png

【WordPress】リンク先をサムネイル表示してくれるプラグインとその改造

まえがき [browser-shot url="http://goo...

記事を読む

rakuten-api-1rakuten-api-1.png

楽天APIでISBNコードを使って書籍検索してみる。『PHP&Ruby』

まえがき ちょっとした書籍検索サンプルのコードのメモ。 今回何がや...

記事を読む

新着記事

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 ↑