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

PHPUnit path test for download files in Symfony2

我编写了一个测试来检查我的 Symfony2 应用程序中的 wrong/dead 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-tags 包含文件的路径,例如“/files/sample.pdf”。 (文件路径是 web/files/...)

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

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

下的文件

这是正确的,还是有办法测试这个?

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

另一种选择是采取行动来控制文件分发,这样您就拥有更多的安全性和控制权,但需要您更改您的应用程序。