2016-04-30 6 views
1

phpunitのテストには新しく、ステータスコードを探す非常に簡単なテストを行った。phpunitのテストに合格、symfony 2でブラウザのページ読み込みに失敗する

私が実行したときにテストに合格:

bin\phpunit -c app src\AppBundle\Tests\Controller\StarLinX\TravelControllerTest.php 
PHPUnit 4.6.10 by Sebastian Bergmann and contributors. 
Configuration read from C:\PhpstormProjects\dir\app\phpunit.xml.dist 

. 

Time: 6.03 seconds, Memory: 20.00Mb 

OK (1 test, 1 assertion) 

しかし、私は、ブラウザでページを読み込む際に、例外はステータスコード500

と小枝ファイルをレンダリングスローされます私は多分、これはと思いましたキャッシュの問題なので、--env = dev、prod、およびtestでキャッシュをクリアしました。

このエラーのトラブルシューティングを行うにはどうすればよいですか?

これは私のテストファイルである:これは、DEV環境で実行した場合にスローされるエラーです

namespace AppBundle\Tests\Controller\StarLinX; 
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 
class TravelControllerTest extends WebTestCase { 
    public function testGET() { 
    // Create a new client to browse the application 
    $client = static::createClient(); 

    // get the page 
    $crawler = $client->request('GET', '/travel/aaaaa'); 
    $this->assertEquals(200, $client->getResponse()->getStatusCode(), "Unexpected HTTP status code for GET /travel/aaaaa"); 

    } 
} 

An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") 

だから、もう少し分析した後、私はエラーがあることを見つけますであり、これは{{ weatherInfo.now }}である必要があります。開発環境の実行中にエラーがスローされます。プロダクションでは、小枝は単にArrayと表示します。

これは正常な動作ですか?

答えて

0

あなたのテストはエラーステータスのみをチェックして書かれているので、テストは十分に具体的ではありません。別のページを表示するとどうなりますか?テストは引き続き行われます。


あなたは、ページが正しく表示されていることを確実にするために、いくつかの他のテストを追加する必要がありますあなたのコードをデバッグするのに十分な情報を持っていない場合は、TOUがアクセスできる

// … 
$this->assertEquals(200, $client->getResponse()->getStatusCode(), 
    "Unexpected HTTP status code for GET /travel/aaaaa"); 

// Check that the page has a title. 
$this->assertSame(
    1, 
    $crawler->filter('title')->count() 
); 
// Check that the page has a correct title. 
$this->assertSame(
    'Travel', 
    $crawler->filter('title')->text() 
); 

// Check something in the content 
$this->assertSame(
    'Hello, World!', 
    $crawler->filter('body > div#content')->text() 
); 

を通常はエラーメッセージを含むページコンテンツ:

die($this->client->getResponse()->getContent()); 
+0

追加されたテストの唯一の問題は、ページがまだパス。なぜ、枝ではなくprodで配列にエラーがスローされますか? – ScottGutman

+0

@ScottGutman *追加されたテストの唯一の問題は、ページがまだ通り過ぎるということです。エラーがある場合、最後の2つのアサーションは失敗します。 –

+0

@ScottGutmanデバッグモードが有効なので、Twigはエラーを隠します(例外を隠す方が*ページを分割する方がよい)。しかし、ログファイル 'app/logs/prod.log'にエラーが表示されるはずです。 –

関連する問題