我做的Symfony2控制器的功能测试,从这个继承我的测试类:用户令牌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()
是实例我的学说“用户”实体。
但运行功能测试时: $this->container->get('security.token_storage')->getToken()->getUser()
是包含用户名称的字符串和$this->getUser()
是NULL
。
在我的应用程序和功能测试中,为了使行为保持一致,我需要做些什么?
执行您的请求时,试试这个方法:'$客户 - >请求(” GET','/ post/12',array(),array(),array( 'PHP_AUTH_USER'=>'username', 'PHP_AUTH_PW'=>'pa $$ word', ));' – smarber