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

Reu*_*ven 11 php phpunit symfony

我使用它FacebookBundle来验证我的Symfony2应用程序中的用户.但是,我想用phpunit创建功能测试,该测试使用经过身份验证的用户.

此外,我不想使用facebook用户,而是使用一个用户.

有人知道如何实现这个吗?

Cro*_*zin 16

它实际上非常简单.

  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"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如您所见,已定义HTTP身份验证.所以现在,您所要做的就是在功能测试中设置客户端:

    $client = static::createClient(array(), array(
        'PHP_AUTH_USER' => 'user',
        'PHP_AUTH_PW'   => 'userpass',
    ));
    
    Run Code Online (Sandbox Code Playgroud)

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

  • @whistlergreg然后将`security.yml`从`config.yml`导入`config_prod/dev.yml`,创建`security_test.yml`并将其导入`config_test.yml`.您可能还需要从`config_test.yml`中删除`config_dev.yml`的依赖项. (3认同)
  • 感谢您的回答.但是,我希望这个用户拥有我的应用程序中使用的许多其他属性.例如,他们有一个$ facebookId属性.如何使用具有自定义属性的硬编码用户? (2认同)