Я делаю функциональные тесты контроллеров 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('[email protected]', 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);
}
}
Если я использую контроллер как часть приложения: $this->container->get('security.token_storage')->getToken()->getUser()
и $this->getUser()
являются экземплярами моего объекта Doctrine "user".
Но при выполнении функциональных тестов: $this->container->get('security.token_storage')->getToken()->getUser()
— это строка, содержащая имя пользователя, а $this->getUser()
— это NULL
.
Что мне нужно сделать, чтобы поведение в моем приложении и функциональных тестах было согласованным?
$client->request('GET', '/post/12', array(), array(), array( 'PHP_AUTH_USER' => 'username', 'PHP_AUTH_PW' => 'pa$$word', ));
- person smarber   schedule 19.05.2015