繁体   English   中英

symfony2控制器的功能测试:如何生成路由

[英]Functional test of a symfony2 controller: How to generate a route

在symfony2控制器上,我想测试一个返回Response对象的控制器。 我的测试类扩展自WebTestCase 我使用static::createClient()来获取一个可操作的客户端。

我的问题是使用虚拟主机在当前安装上调用好路由

$client->getContainer()->get('router')->generate('my_route', array(), true)生成一个localhost作为主机的路由。 但这不起作用,因为我有myproject.local作为主机。

$client->getContainer()->get('kernel')->getRootDir()和其他dir方法提供linux文件路径,而不是web路径。

我不能硬编码,因为我并不孤单。 那么获得正确路由的方法是什么,还是有另一种方法来测试控制器?

Symfony2的内置测试框架(WebTestCase)只需要能够在不同环境中测试应用程序的相对路径:

$client->getContainer()->get('router')->generate('my_route', array(), false);

Symfony模拟http客户端,并针对为该测试创建的内核实例进行测试。 没有涉及Web服务器。

您可以在此处详细了解客户端模拟的工作原理: http//symfony.com/doc/current/book/testing.html#working-with-the-test-client

正如Symfony文档中所提到的,您应该使用绝对URL,因为URL的更改将影响您的最终用户,这也是您在功能测试中想要涵盖的内容。

“硬编码请求URL是功能测试的最佳实践。如果测试使用Symfony路由器生成URL,它将不会检测到可能影响最终用户的应用程序URL的任何更改。”

在此处查看更多信息: http//symfony.com/doc/current/book/testing.html#working-with-the-test-client

暂无
暂无

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

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