2016-03-31 11 views
6

私は最初のテストを書くために機能テストについてSymfony documentationに従いましたが、いくつか問題があります。Symfonyの機能テストは失敗しますが、同じリクエストがブラウザで機能します

Browser response

をしかし、私はシェルでphpunit -c app/を実行すると、私は失敗を取得:私はブラウザを介して取得レスポンスが良い作品。私は別のものをしようとした場合

<?php 

namespace AppBundle\Tests\Controller; 

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

class MeterAPIControllerTest extends WebTestCase 
{ 
    public function testGetAllVariables() 
    { 
     $client = static::createClient(); 
     $crawler = $client->request(
      'GET', 
      '/meters/121/120/variables' 
     ); 

     // Assert a specific 200 status code 
     $this->assertEquals(200, $client->getResponse()->getStatusCode()); 
    } 
} 

:コントローラ\ MeterAPIControllerTest \

1) AppBundleの\テスト:: testGetAllVariables は500試合これはコードである200

期待主張失敗しました。テストアサーション、私も失敗を取得します。

// Assert that the "Content-Type" header is "application/json" 
$this->assertTrue(
    $client->getResponse()->headers->contains(
     'Content-Type', 
     'application/json' 
    ) 
); 

EDIT

私はapp/logs/test.logphpunitを実行すると、私はPHPの例外を取得:

を[2016年3月31日夜3時25分21秒] request.CRITICAL:キャッチされないPHP例外 Doctrine \ Common \ Persistence \ Mapping \ MappingException: "無効なマッピング ファイル 'AppBundle.Entity.EM2Meter.orm.yml'がクラス 'AppBundle \ Entity \ EM2Meter'です。" (オブジェクト) /アプリケーション/MAMP/htdocs/iso50k1_tst_symfony/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php 行86 {"例外": "[オブジェクト] (Doctrine \ Common \ Persistence \マッピングの\ MappingException(コード:0):クラス ため 無効なマッピング・ファイル 'AppBundle.Entity.EM2Meter.orm.yml' 'AppBundle \エンティティ\ EM2Meter' /アプリケーション/ MAMP/htdocsに/ iso50k1_tst_symfony /ベンダー/ドクトリンで/共通/ libに/ドクトリン/共通/永続/マッピング/ MappingException.php:86) "} []

私はこれをどのように修正することができますか?

+2

はあなたが正しいポートに要求してよろしいですか? – DevDonkey

+0

@DevDonkeyはい、要求は正しいです。 – Francesco

+1

本当ですか?私はあなたが新しいクライアントをインスタンス化するときに指定しない限り、デフォルトではポート80になります。 – DevDonkey

答えて

1

あなたは、このようなホストを指定し、あなたのクライアントをインスタンス化するとき、そのはまだ80

をデフォルト、ポート8000​​上のローカルホストサーバーに接続するためにsymfonyのクライアントに語っていません。

$client = static::createClient([], [ 
    'HTTP_HOST' => 'localhost:8000', 
]); 
+0

ありがとうございますが残念ながらこれで問題は解決されません。 – Francesco

+0

サーバログは何を表していますか? – DevDonkey

+0

質問を更新しました。 – Francesco

0

ここにキャッシュの問題があるようです。私はテストを実行する前に、機能テストのためにプロジェクトを実行する前に、現在の環境のキャッシュをきれいにすることをお勧めだと思います:

$ php bin/console cache:clear --env=dev

$ php bin/console cache:clear --env=tests