Symfony2のControllerテスト時にユーザーエージェントを指定する
普通に使いそうだけど、何気にあまり日本語の記事見かけなかったのでメモ。
指定方法
以下の2パターンで指定可能。
こっちは公式ドキュメント(日本語)に書いてあるやつ。
$client = static::createClient([], ['HTTP_USER_AGENT' => 'Mozilla/5.0 (iPhone; ...(省略)']);
こういう指定もできる。
$client = static::createClient(); $client->setServerParameters([ 'HTTP_USER_AGENT' => 'Mozilla/5.0 (iPhone; ...(省略)' ]);
例えばparameters.yml
とかに定義しておいたやつを使いたい場合は、$clientを先に作っておかないといけないので、下のパターンを使う感じになる。
$client = static::createClient(); $client->setServerParameters([ 'HTTP_USER_AGENT' => $client->getContainer()->getParameter('test_user_agent_mobile') ]);
ちなみに
デフォルト値はSymfony2 BrowserKit
になるけど、そのデフォルト値自体を変更するにはどうするのかなーと思っていろいろ調べてたら、こんな感じで出来そうだった(その時は)
parameters: test.client.parameters: HTTP_HOST: "localhost" HTTP_USER_AGENT: "Mozilla/5.0 (iPhone; ...(省略)"
でも、以下のissueが上がっている通り、parametersでの設定後にデフォルト値がロジック内で上書きされていて、実際は効かないっぽい。
2014年からOpenのままなんで、あんま需要ないんかなー。