如何在功能测试中使用令牌模拟身份验证
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何在功能测试中使用令牌模拟身份验证
在功能测试中验证请求可能会降低套件的速度。这可能会成为一个问题,尤其是当form_login
使用,因为它需要其他请求来填写和提交表单。
解决方案之一是配置您的防火墙http_basic
中所解释的测试环境如何在功能测试中模拟HTTP身份验证.另一种方法是自己创建一个令牌并将其存储在会话中。在执行此操作时,必须确保与请求一起发送了适当的cookie。下面的例子演示了这种技术:
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
/ / src / Acme / DemoBundle /测试/控制器/ DemoControllerTest.php名称空间Acme\DemoBundle\测试\控制器;使用ob娱乐下载\包\FrameworkBundle\测试\WebTestCase;使用ob娱乐下载\组件\BrowserKit\饼干;使用ob娱乐下载\组件\安全\核心\身份验证\令牌\UsernamePasswordToken;类DemoControllerTest扩展WebTestCase{私人$客户端=零;公共函数设置(){$这->客户=静态::createClient ();}公共函数testSecuredHello(){$这->登录();$这->客户端->请求(“得到”,“/演示/安全/ hello /法”);$这->assertTrue ($这->客户端->getResponse ()->isSuccessful ());$这->assertGreaterThan (0,$履带->过滤器(html:包含(“你好法”)的)->count ());}私人函数登录(){$会话=$这->客户端->getContainer ()->get (“会话”);$防火墙=“secured_area”;$令牌=新UsernamePasswordToken (“管理”,零,$防火墙,数组(“ROLE_ADMIN”));$会话->集(“_security_”.$防火墙序列化($令牌));$会话->save ();$饼干=新饼干($会话->getName (),$会话->getId ());$这->客户端->getCookieJar ()->集($饼干);}}
请注意
中描述的技术如何在功能测试中模拟HTTP身份验证.更干净,因此是首选的方式。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。