php - symfony2 Controller 的功能测试 : How to generate a route

标签 php unit-testing symfony controller phpunit

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

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

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

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

我不能硬编码,因为我不是一个人在这个项目上。那么有什么方法可以得到正确的路由,或者有没有其他方法可以测试 Controller 呢?

最佳答案

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

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

Symfony 模拟一个 http 客户端并针对为该测试创建的内核实例进行测试。不涉及网络服务器。

您可以在此处阅读有关客户端模拟如何工作的更多信息: http://symfony.com/doc/current/book/testing.html#working-with-the-test-client

关于php - symfony2 Controller 的功能测试 : How to generate a route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494641/

相关文章:

php - 如何获取mysql表中的下一个自增ID?

php - Ajax 数组显示控件 - 分页

python - 单元测试python中的软断言

unit-testing - 为以下 meteor 代码写一个mocha单元测试代码

java - 进入测试

php - Symfony2 : Very Slow Session Handling

php - mumamo-alt-php-tags-mode 默认

php - 包含已注入(inject)依赖项的对象的对象的 DI 容器

symfony - 绕过 HSTS 错误给出 'file not found'

php - 在 Symfony2 中直接使用库而不是包