5
¿Cómo puedo probar una redirección en una acción de controlador con PHPUnit?Zend Framework 2 ¿cómo probar la redirección en la acción del controlador?
class IndexControllerTest extends PHPUnit_Framework_TestCase
{
protected $_controller;
protected $_request;
protected $_response;
protected $_routeMatch;
protected $_event;
public function setUp()
{
$this->_controller = new IndexController;
$this->_request = new Request;
$this->_response = new Response;
$this->_routeMatch = new RouteMatch(array('controller' => 'index'));
$this->_routeMatch->setMatchedRouteName('default');
$this->_event = new MvcEvent();
$this->_event->setRouteMatch($this->_routeMatch);
$this->_controller->setEvent($this->_event);
}
public function testIndexActionRedirectsToLoginPageWhenNotLoggedIn()
{
$this->_controller->dispatch($this->_request, $this->_response);
$this->assertEquals(200, $this->_response->getStatusCode());
}
}
El código anterior hace que este error al ejecutar pruebas unitarias:
Zend\Mvc\Exception\DomainException: Url plugin requires that controller event compose a router; none found
Es porque estoy haciendo una redirección dentro de la acción del controlador. Si no hago un redireccionamiento, las pruebas unitarias funcionan. ¿Algunas ideas?
parece eso mismo, un duplicado indirecta de http://stackoverflow.com/questions/12570377/how-can-i-pass-extra -parameters-to-the-routematch-object –
Sugeriría buscar cómo crear una instancia del objeto del enrutador y luego agregarlo al MvcEvent ya que el complemento de URL lo requiere. Me imagino que un buen punto de partida sería la clase SimpleRouteStack, ya que implementa la interfaz que se está comprobando. – DrBeza