2015-12-04 3 views
1

Я написал тест для проверки неправильных/мертвых URL-адресов в приложении Symfony2.PHPUnit тест пути для загрузки файлов в 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-теги содержат пути к файлам, например "/files/sample.pdf". (filepath is web/files/...)

Я хочу проверить, существуют ли эти файлы, но я получаю 404-ошибку из PHPUnit.

Я предполагаю, что это связано с тем, что phpunit не использует веб-сервер, но работает непосредственно с приложением и поэтому не может получить доступ к файлам, находящимся под «web/files/...».

Это правильно или есть способ проверить это?

ответ

2

Правильно, phpunit не собирается на ваш веб-сервер, так как нет файлов перезаписи/обслуживания. Что вы можете сделать, это регулярное выражение URL-адреса и поиск шаблона файла, если найденный вами используется другой метод для проверки файлов, например, тот, который входит в вашу общую папку, чтобы найти его.

Другой вариант - иметь действие для управления распределением файлов, таким образом, у вас есть больше secutiry и control, но вам необходимо изменить ваше приложение.