小编And*_*ton的帖子

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('norbert.scrunge@gmail.com', 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);
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我将控制器用作应用程序的一部分: $this->container->get('security.token_storage')->getToken()->getUser()并且$this->getUser()是我的Doctrine"用户"实体的实例.

但运行功能测试时: $this->container->get('security.token_storage')->getToken()->getUser()是包含用户名和一个字符串$this->getUser()是NULL.

在我的应用和功能测试中,我需要做些什么才能使行为保持一致?

php functional-testing security-context symfony

3
推荐指数
1
解决办法
1230
查看次数