2017-11-10 1 views
0

재사용 가능한 번들을 작성 중이며이 번들과 호스팅 앱의 통합 테스트를 수행하고 싶습니다. 문제는 symfony가 내 번들의 DependencyInjection\Extension::load이나 DependencyInjection\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' 

같은 : 여기

내 테스트입니다 .

+0

커널 파일에 번들을 추가 했습니까? –

+0

@ tokeeen.com 예 했어 – Sergey

답변

0

문제가있는 곳을 파악했습니다. 이전 캐시 버전의 컨테이너가 테스트에 사용되었으므로 번들 구성의 변경 사항이 반영되지 않았습니다. php bin/console cache:clear --env=test 명령은 캐시를 다시 작성하는 데 도움이됩니다. 원래 질문에서 언급 한 방법은 커널을 부팅 할 때 (적어도 캐시가 이미 존재할 때) 호출하지 않아야합니다.

+0

그냥 rm -rf var/cache/* –

+0

@mike를 사용하는 것이 좋습니다. 나는 명령의 비추천에 관하여 무언가를 아직도 들었다 그러나 아직도. – Sergey