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 文件夹来寻找它。
另一种选择是采取行动来控制文件分发,这样您就拥有更多的安全性和控制权,但需要您更改您的应用程序。
我编写了一个测试来检查我的 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 文件夹来寻找它。
另一种选择是采取行动来控制文件分发,这样您就拥有更多的安全性和控制权,但需要您更改您的应用程序。