내가하려는 것은 내 번들 (재사용 가능한 제품)의 기능 테스트입니다.번들을 기능 테스트하는 데 WebTestCase를 사용할 때 구성을 지정 하시겠습니까?
- 이
MyParamConverter
호출 및 컨트롤러가my.event
를 던졌습니다 MyObject
/my/url
Symfony\Bundle\FrameworkBundle\Test\WebTestCase
을 확장하고 새 클라이언트를 만들어야합니다. $client = static::createClient();
$crawler = $client->request('GET', '/my/url');
이렇게하면 어떤 번들이로드됩니까? 환경에서 사용할 구성 파일을 지정하려면 어떻게해야합니까 (기본 값은 test
으로 가정).
편집 : 좋아, 제 질문에 대해 더 자세히 설명해주십시오. 재사용 할 수있는 번들을 짜내고 있습니다. AcmeMessagingBundle. 이제 기능 테스트를하고 싶습니다. ("기본 설정 파일"을 말한다)이 테스트와
public function testReceiveApiRoute()
{
$client = $this->createClient();
/** @var $route \Symfony\Component\Routing\Route */
$route = $client->getContainer()->get('router')
->getRouteCollection()->get('acme_messaging_receive');
$this->assertNotNull($route);
$this->assertEquals('POST', $route->getRequirement('_method'));
$this->assertEquals('acme_messaging.controller.api:receive',
$route->getDefault('_controller'));
}
/**
* @depends testReceiveApiRoute
*/
public funcion testReceiveApiWorkflow()
{
$client = $this->createClient();
// Make a POST request
$request = Request::create('/my/route', 'POST', array(
'a' => 'value'
));
// Request is convered in MyObject instance and that my.event is fired
}
, app/config_test.yml
가로드 : 시나리오 /my/url
를 호출합니다. 질문 :
기본 구성 파일을 사용하지 않음을 의미하는 "고립"상태로 테스트하지 않아야합니까? 내 번들이 비어있는 다른 사람이 테스트 한 경우 app/config_test.yml
? 테스트가 실패합니다 ...
테스트는 접두사가 붙은 경로에서도 실패합니다. AcmeMessagingBundle의 routing.xml
을 접두어로 가져 오면 testReceiveApiWorkflow
이 실패합니다!
질문을 이해할 수 없습니다. "로드 된 번들"은 무엇을 의미합니까? 맞춤 웹 테스트 클라이언트를 지정하는 방법을 의미 했습니까? 또는 어떤 설정 파일이로드되었는지 확실하지 않을 수도 있습니다. 제발, 약간의 설명을 해주세요 – Cyprian
@ Cyprian 어떤 설정 파일이로드 될지 모르겠습니다. 나는'config_test.yml'을 (app/config에서)'config_dev.yml'을로드한다고 가정합니다. 제가 알고 싶습니다. 좋은 연습입니까? 어떻게하면'app/config/config_test.yml' 대신'/ Tests/Fixture/config_test.yml'에서 설정 파일을 사용할 수 있습니까? – gremo
Bundle \ Resources \ config \ services.yml (또는 xml)에 "test.client"라는 서비스를 추가하는 것만으로도 충분하다고 생각합니다. 이 파일은 DI \ Extension 파일에 의해로드되고 프레임 워크는 기본 WebTestClient 대신 서비스를 사용하는 방식으로 "test.client"이름을 처리합니다. 그러나 추가 구성 파일을로드하려면이 문서가 유용 할 수 있습니다. http://symfony.com/doc/2.0/cookbook/bundles/extension.html. 인사말! – Cyprian