FOSUserBundle を使用する Symfony 2 アプリの単体テストを作成しています。この同様の質問とは異なり: FOSUserBundle Unit testing
ただし、私は HTTP 認証 (ログイン フォームのみ) を使用せず、偽のメモリ内エンティティではなく、実際のユーザー エンティティを使用する必要があります。
多くの検索と試行にもかかわらず、私はそれを機能させることができず、プロセス全体が非常に不透明であるため、どこから始めればよいかさえわかりません. ここに私が持っているコードがあります:
protected $em;
protected $client;
protected $testuser;
public function setUp() {
$kernel = static::createKernel();
$kernel->boot();
$this->em = $kernel->getContainer()->get('doctrine.orm.entity_manager');
$this->em->beginTransaction();
$this->client = static::createClient();
$usermanager = $kernel->getContainer()->get('fos_user.user_manager');
$this->testuser = $usermanager->createUser();
$this->testuser->setUsername('test');
$this->testuser->setEmail('test@lemuria.org');
$this->testuser->setPlainPassword('test');
$usermanager->updateUser($this->testuser);
}
public function testLogin() {
$crawler = $this->client->request('GET', '/en/login');
$form = $crawler->selectButton('_submit')->form(array(
'_username' => 'test',
'_password' => 'test',
));
$this->client->submit($form);
$this->assertTrue($this->client->getResponse()->isRedirect(), 'should be redirected');
$this->assertTrue($this->client->getResponse()->isRedirect('http://localhost/en/account'), 'should be redirected to account page');
$crawler = $this->client->followRedirect();
2番目のアサーションで失敗します。私が知る限り、ログインページにリダイレクトされます。
ログインが失敗する理由を単純に理解することは明らかに不可能であるため、どこから解決策を探し始めればよいかさえわかりません。