asmz.beer

麦芽(ばくが、英語:malt)とは、麦、特に大麦の種子を発芽させたもので、ビール、ウイスキー、水飴の原料となる。(Wikipediaより)

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での設定後にデフォルト値がロジック内で上書きされていて、実際は効かないっぽい。

github.com

2014年からOpenのままなんで、あんま需要ないんかなー。