Я пишу модульные тесты для своего приложения Symfony 2, которое использует FOSUserBundle. В отличие от этого аналогичного вопроса: FOSUserBundle Unit testingUnit Testing и 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('[email protected]');
$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();
и он не работает по второму утверждению. Насколько я могу понять, он перенаправляет обратно на страницу входа.
Я застрял, и я даже не знаю, с чего начать искать решение, потому что, по-видимому, невозможно просто понять, почему логин завершается с ошибкой.
спасибо, Майкл. С некоторой дополнительной отладкой я мог бы войти в систему. Теперь мне интересно, нужно ли мне запускать весь процесс входа в систему для каждого отдельного теста darn или если я могу сохранить сеанс, как только я проверил, что он работает? – Tom