Symfony2 中下载文件的 PHPUnit 路径测试

标签 php symfony phpunit functional-testing

我编写了一个测试来检查我的 Symfony2 应用程序中是否有错误/无效的 URL。

我按照中的建议使用功能测试 http://symfony.com/doc/current/book/testing.html

测试打开一条路径,检查所有

    <a...></a>

标记,然后创建对这些链接的请求:

    $client = (new ClientProvider())->getClient();
    $crawler = $client->request('GET', $route);
    $linkList = $crawler->filter('a');
    foreach ($linkList as $link) {
        $url = $link->getAttribute('href');
        $crawler = $client->request('GET', $link->getAttribute('href'));
        //... some assertion
    }

问题是,某些 a 标签包含文件路径,例如“/files/sample.pdf”。 (文件路径是 web/files/...)

我想检查这些文件是否存在,但我从 PHPUnit 收到 404 错误。

我认为这是因为 phpunit 不使用网络服务器,而是直接与应用程序一起工作,因此它无法访问“web/files/...”下的文件。

这是正确的吗?或者有办法测试吗?

最佳答案

它是正确的,phpunit 不会访问您的网络服务器,这意味着没有正在进行重写/服务文件。 您可以做的是正则表达式 URL 并查找文件模式,如果发现您使用另一种方法来测试文件,例如进入您的公共(public)文件夹来查找它。

另一种选择是通过操作来控制文件分发,这样您就可以拥有更多的安全性和控制力,但需要您更改应用程序。

关于Symfony2 中下载文件的 PHPUnit 路径测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085125/

相关文章:

php - 测量 PHP 脚本的时间 - 使用 $_SERVER ['REQUEST_TIME' ]

php - 当记录没有插入(准备好的语句)时,为什么我没有在 PHP 中收到错误?

php - 如何使用 PHP 将 "HH:MM:SS"字符串转换为秒数?

symfony - 使用多个实体管理器解析目标实体

php - Symfony2 - 路由到片段标识符

php - 为什么在 android 中计算与在 php 中不同?

html - 从 Twig 模板生成 pdf 文件

php - 阻止 PHPUnit 的 DBUnit 在数据库中插入 XML 数据集

php - 拉维尔 : Use Eloquent Model in API Testing

php - 伊测试。截断外键