これからテストクラスを継承して、Symfony2コントローラーの機能テストを行っています。
class InsecureWebTestCase extends WebTestCase {
protected $client = null;
public function setUp() {
$this->client = static::createClient();
$session = $this->client->getContainer()->get('session');
$firewall = 'default';
$token = new UsernamePasswordToken('norbert.scrunge@gmail.com', null, $firewall, array('ROLE_USER', 'ROLE_ADMIN'));
// $this->client->getContainer()->get('security.context')->setToken($token);
$session->set("_security_$firewall", serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$this->client->getCookieJar()->set($cookie);
}
}
コントローラーをアプリの一部として使用する
と、Doctrine の「ユーザー」エンティティのインスタンスに$this->container->get('security.token_storage')->getToken()->getUser()
なります。$this->getUser()
ただし、機能テストを実行する場合:
$this->container->get('security.token_storage')->getToken()->getUser()
はユーザー名を含む文字列で、$this->getUser()
はNULL
.
アプリと機能テストで動作の一貫性を保つために何をする必要がありますか?