こんにちは市丸です。
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 機能テストを御覧下さい。