こんにちは市丸です。
symfony コマンドで generate:module をすると、functional test用ファイルが自動生成されます。
symfonyで携帯サービスを作る場合、frontendは携帯端末 backendではPCブラウザでアクセスすることがほとんだと思います。
frontendのfunctional testを携帯のUserAgentにする方法を紹介します。
※試したのは、symfony 1.4です。
まずスケルトンをコピー
mkdir -p data/skeleton cp -r lib/vendor/symfony/lib/task/generator/skeleton/module data/skeleton/
data/skeleton/module/test/actionsTest.phpを以下のように改変。
<?php include(dirname(__FILE__).'/../../bootstrap/functional_##APP_NAME##.php'); if (!$aBrowser){ $aBrowser = new sfBrowser(); } $browser = new sfTestFunctional($aBrowser); $browser-> get('/##MODULE_NAME##')-> with('request')->begin()-> isParameter('module', '##MODULE_NAME##')-> isParameter('action', 'index')-> end()-> with('response')->begin()-> isStatusCode(200)-> end() ;
test/bootstrap/functional.phpをApplicationごとに切り替えるため コピーを作成します。
cp test/bootstrap/functional.php test/bootstrap/functional_frontend.php cp test/bootstrap/functional.php test/bootstrap/functional_backend.php
functional_frontend.php の最後に以下を追加しましょう
$aBrowser = new sfBrowser(); $aBrowser->setVar('HTTP_USER_AGENT', 'DoCoMo/2.0 N06A3(c100;TB;W24H12)'); $aBrowser->setVar('REMOTE_ADDR','127.0.0.1'); $aBrowser->setVar('HTTP_X_DCMGUID', 'HOGEHOGE'); // iモードIDはこんなかんじ
さらに詳しいfunctional testを行いたい場合は
symfony 機能テストを御覧下さい。