我正在为使用 FOSUserBundle 的 Symfony 2 应用程序编写单元测试。与这个类似的问题不同: FOSUserBundle 单元测试
但是,我不使用 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();
它在第二个断言上失败了。据我所知,它重定向回登录页面。
我被困住了,我什至不知道从哪里开始寻找解决方案,因为显然不可能简单地找出登录失败的原因。