2017-01-07 6 views
3

のsysinfo:symfonyのwebフォルダにある静的ファイルをphpunitでテストするには?

  • のPHPUnit 5.7.4
  • PHP 7.0.13
  • symfonyの3.2.1

私は "ダウンロード" ページ上のリンクをたどると、検証しようとしていますファイルはダウンロード可能ですが、私が$client->click($crawlerDownload->link());のリンクに従うと404となります。 symfony $clientがwebdirectoryの静的ファイルにアクセスすることはできませんか?どのように私はこれをテストできますか?

faviconテストは、テストケースの簡略化されたバージョンです。あなたは、テストはアプリケーションをブートストラップしていることはできません

public function testPressDownload() 
{ 
    $client = static::createClient(); 
    $client->followRedirects(false); 

    //create fixture file 
    $kernelDir = $client->getKernel()->getRootDir(); 
    $file = "${kernelDir}/../web/download/example.zip"; 
    file_put_contents($file, "dummy content"); 


    $crawler = $client->request('GET', '/files'); 
    $this->assertEquals(200, $client->getResponse()->getStatusCode()); //ok 

    $crawlerDownload = $crawler 
     ->filter('a[title="example.zip"]') 
    ; 
    $this->assertEquals(1, $crawlerDownload->count()); //ok 


    $client->click($crawlerDownload->link()); 
    $this->assertEquals(200, $client->getResponse()->getStatusCode()); //fails 404 
} 


public function testFavicon() 
{  
    $crawler = $client->request('GET', '/favicon.ico'); 
    $this->assertEquals(200, $client->getResponse()->getStatusCode()); //fails 404 
} 
+0

'$ crawler = $ client-> request( 'GET'、 'favicon.ico');はスラッシュを付けませんでしたか? –

+0

yesもスラッシュ '/'なしで試しました。同じ結果 - > '404' – c33s

答えて

2

、それは「実際のWebサーバー」ではありません/favicon.icoを要求するときに、それが見つからない場合、このパスに対応するアプリケーションでの経路を探索します。

/** 
* @Route("/favicon.ico", name="fake_favicon_route") 
* 
* @return Response 
*/ 

あなたはテストが今合格することが表示されます。これを確認するには

は、偽のルートを作成します。

+0

私はそれを疑った。問題は、ファイルが実際に正しい場所にあるかどうかをテストすることができない偽のルートです。アップロードディレクトリ設定が間違っていると404の結果を防止します。クエストはまだファイルのアップロードをテストする方法ですか? – c33s

+0

もちろん。 séléniumのような別の機能テストフレームワークを使用する必要があります。 symfonyで直接行うことはできません。 – COil

関連する問題