Symfony 번들에서 이벤트 리스너를 테스트하려면 어떻게해야합니까?테스트 컨트롤러 추가 및 테스트 이벤트 리스너
클라이언트 (테스트 요청 및 응답 받기)로 테스트 할 계획입니다. 하지만 내 번들에는 컨트롤러가 없습니다. 기능 테스트와 테스트 출력에서 '특별'컨트롤러와 라우트를 추가 할 수 있습니까?
Symfony 번들에서 이벤트 리스너를 테스트하려면 어떻게해야합니까?테스트 컨트롤러 추가 및 테스트 이벤트 리스너
클라이언트 (테스트 요청 및 응답 받기)로 테스트 할 계획입니다. 하지만 내 번들에는 컨트롤러가 없습니다. 기능 테스트와 테스트 출력에서 '특별'컨트롤러와 라우트를 추가 할 수 있습니까?
테스트 용 컨트롤러를 추가하는 방법을 찾았습니다.
퍼스트 - 새로운 컨트롤러 클래스 (I는 %의는, bundleName의 %/테스트/컨트롤러를 생성)
퍼센트의는, bundleName %의은/테스트/컨트롤러/TestController.php
namespace %BundleName%\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class TestController extends Controller
{
public function rootAction()
{
return new Response('This is home page');
}
public function galleryAction($id)
{
return new Response(sprintf('This is gallery %s', $id));
}
}
그럼이 제어기를 이용 만들 시험 중.
%는, bundleName %의은/테스트/컨트롤러/PageControllerTest.php 각 시험 시작 setUpRoutes 방식에
namespace %BundleName%\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use Symfony\Component\Routing\Route;
class PageControllerTest extends WebTestCase
{
/**
* @var \Symfony\Bundle\FrameworkBundle\Client
*/
private $client;
public function setUp()
{
$this->client = static::createClient();
$this->client->followRedirects(true);
$this->setUpRoutes();
}
public function testFirst()
{
$crawler = $this->client->request('GET', '/gallery/42');
}
protected function setUpRoutes()
{
$container = $this->client->getContainer();
/** @var \Symfony\Bundle\FrameworkBundle\Routing\Router $router */
$router = $container->get('router');
$collection = $router->getRouteCollection();
foreach ($collection->all() as $routeId => $route) {
//Leave some routes if you need...
$collection->remove($routeId);
}
$controllerClassName = '\%BundleName%\Tests\Controller\TestController';
$rootRoute = new Route('/', array('_controller' => sprintf('%s::%s', $controllerClassName, 'rootAction')));
$galleryRoute = new Route('/gallery/{id}', array('_controller' => sprintf('%s::%s', $controllerClassName, 'galleryAction')));
$collection->add('_test_root_route', $rootRoute);
$collection->add('_test_gallery_route', $galleryRoute);
}
}
라우팅리스트를 지우고 새로운 경로를 등록한다. 각 _controller 매개 변수 경로 값은 \%BundleName%\Tests\Controller\TestController::nameOfAction'
입니다.