2017-11-10 13 views
0

私は再利用可能なバンドルを作成しており、このバンドルとホスティングアプリとの統合テストを実行したいと考えています。問題は、SymfonyがDependencyInjection\Extension::loadDependencyInjection\Configuration::getConfigTreeBuilderのどちらのメソッドも私のバンドルのどれかと呼ばないので、バンドルのサービス設定がロードされず、サービスが正しく構築されていないということです。 symfonyに、実際のリクエストのように、テストのすべてをロードするにはどうしたらいいですか?ここでSymfonyでの統合テスト

は私のテストで:

namespace Tests\AclAgentBundle; 

use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; 

class IntegrationTest extends KernelTestCase 
{ 
    public function testAgentExistence() 
    { 
     $container = static::bootKernel()->getContainer(); 

     $service = $container->get('test.Foo\Bar\Baz'); 

    //...assertions... 
} 

test.Foo\Bar\Bazは、テスト中にコンテナのgetメソッドを介してサービスを取得するために使用

services: 
    test.Foo\Bar\Baz: '@Foo\Bar\Baz' 

のようなホスティングアプリのconfigで宣言され、サービスの別名であります。

+0

カーネルファイルにバンドルを追加しましたか? –

+0

@ tokeeen.comはい私はしました – Sergey

答えて

0

私はどこに問題があるのか​​把握しました。古いバージョンのコンテナがテストで使用されたため、バンドルの構成の変更は反映されませんでした。コマンドphp bin/console cache:clear --env=testは、キャッシュを再構築するのに役立ちました。元の質問で述べた方法は、カーネルを起動するときに(少なくともキャッシュが既に存在するときは)呼び出されることは想定されていません。

+0

それはいつもrm -rf var/cache/* –

+0

@mikeを実行する方がいいですか?私はコマンドの廃止についてはまだ聞いていましたが、それでも。 – Sergey