如何在Symfony2功能测试中使用经过身份验证的用户


How to use an authenticated user in a Symfony2 functional test?

我使用FacebookBundle对Symfony2应用程序中的用户进行身份验证。然而,我想用phpunit创建功能测试,它使用经过身份验证的用户。

此外,我不想用一个脸书用户来做这件事,但我已经编码了一个。

有人知道如何实现这一点吗?

其实很简单。

  1. 为测试环境设置security.yml(这是Symfony 2.0-RC3的一个片段(

    security:
        encoders:
            Symfony'Component'Security'Core'User'User: plaintext
        providers:
            in_memory:
                users:
                    user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                    admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
        firewalls:
             secured-area:
                 pattern:    ^/demo/secured/
                 http_basic:
                     realm: "Secured Demo Area"
    
  2. 正如您所看到的,已经定义了HTTP身份验证。所以现在,你所要做的就是在功能测试中设置一个客户端:

    $client = static::createClient(array(), array(
        'PHP_AUTH_USER' => 'user',
        'PHP_AUTH_PW'   => 'userpass',
    ));
    

此链接可能很有用:http://symfony.com/doc/current/testing.html