繁体   English   中英

[Symfony2] [PhpUnit]如何获取/设置功能对象测试的用户对象

[英][Symfony2][PhpUnit] How get/set user object for functionnals tests

我今天在这里是因为我正在为symfony2应用程序进行功能测试,但我有一个小问题:我可以登录TestUser进行测试(在客户端创建过程中传递服务器参数),但是当我只想访问时到我的用户对象(根据我在控制器中的测试),他为空。

这是合乎逻辑的,因为我没有创建登录页面传递的对象,但没有找到该问题的原因,您能帮我吗?

(我知道我可以做一个“初始化函数”来调用登录页面,提交登录表单等...但是我发现它很脏,因为我必须在每次测试前都给她打电话,所以...不)

谢谢 ;)

我在这里找到答案

像这样的功能:

private function logIn()
{
    $session = $this->client->getContainer()->get('session');

    $firewall = 'FIREWALL_NAME'; //set in security_test.yml
    $token = new UsernamePasswordToken('PASSWORD', null, $firewall, array('ROLE_ADMIN'));
    $session->set('_security_'.$firewall, serialize($token));
    $session->save();

    $cookie = new Cookie($session->getName(), $session->getId());
    $this->client->getCookieJar()->set($cookie);
}

将完成工作(创建会话的Cookie)

使用函数witch在客户端Request中设置服务器变量:

$client->request(
'METHOD',
'URI',
PARAMETERS,
array(),
array('PHP_AUTH_USER' => 'username', 'PHP_AUTH_PW' => 'pa$$word')

);

玩得开心 :)

如果要使用真实的用户对象,则应使用DoctrineTestFixtures之类的TestFixtures。

夹具在单独的测试数据库中提供测试数据,我认为它们应在每个功能测试中使用

http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM