【发布时间】:2013-03-07 20:11:17
【问题描述】:
在 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 路径。
我无法对其进行硬编码,因为我并不孤单。那么有什么方法可以得到正确的路由,或者有没有其他方法可以测试控制器呢?
【问题讨论】:
-
为什么将
true作为第三个参数传递给generate方法?您真的需要生成绝对 URL 吗? -
是的,因为默认 url 也是通过 localhost 链接的。或者我需要另一种方法来测试我的控制器。
-
你不是在使用 Symfony 提供的测试客户端吗?
-
是的,这些在 Symfony\Bundle\FrameworkBundle\Test\WebTestCase 中可用
标签: php unit-testing symfony controller phpunit