我写了一个测试来检查我的Symfony2应用程序中的错误/死网址。
我按照建议使用功能测试 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包含文件路径,例如&#34; /files/sample.pdf" ;. (filepath是web / files /...)
我想检查这些文件是否存在,但是我从PHPUnit得到了404错误。
我认为这是因为phpunit不使用网络服务器,而是直接使用该应用程序,因此它无法访问&#34; web / files /..."。< / p>
这是正确的,还是有办法测试这个?
答案 0 :(得分:2)
它是正确的,phpunit不会去你的网络服务器,这意味着没有重写/服务文件正在进行。 您可以做的是正则表达URL并查找文件模式,如果发现您使用另一种方法来测试文件,例如进入公共文件夹查找文件的文件。
另一个选择是有一个控制文件分发的操作,这样你有更多的安全和控制,但需要你更改你的应用程序。