diff --git a/src/Service/SendResponseListenerFactory.php b/src/Service/SendResponseListenerFactory.php new file mode 100644 index 000000000..9e7cf90fb --- /dev/null +++ b/src/Service/SendResponseListenerFactory.php @@ -0,0 +1,25 @@ +setEventManager($container->get('EventManager')); + return $listener; + } +} diff --git a/src/Service/ServiceListenerFactory.php b/src/Service/ServiceListenerFactory.php index 758e62c40..788c91ffc 100644 --- a/src/Service/ServiceListenerFactory.php +++ b/src/Service/ServiceListenerFactory.php @@ -86,7 +86,7 @@ class ServiceListenerFactory implements FactoryInterface 'ViewPrefixPathStackResolver' => 'Zend\Mvc\Service\ViewPrefixPathStackResolverFactory', 'Zend\Mvc\MiddlewareListener' => InvokableFactory::class, 'Zend\Mvc\RouteListener' => InvokableFactory::class, - 'Zend\Mvc\SendResponseListener' => InvokableFactory::class, + 'Zend\Mvc\SendResponseListener' => SendResponseListenerFactory::class, 'Zend\View\Renderer\FeedRenderer' => InvokableFactory::class, 'Zend\View\Renderer\JsonRenderer' => InvokableFactory::class, 'Zend\View\Renderer\PhpRenderer' => ViewPhpRendererFactory::class, diff --git a/test/Service/SendResponseFactoryTest.php b/test/Service/SendResponseFactoryTest.php new file mode 100644 index 000000000..e4ea9143b --- /dev/null +++ b/test/Service/SendResponseFactoryTest.php @@ -0,0 +1,55 @@ +prophesize(SharedEventManagerInterface::class); + $events = $this->prophesize(EventManagerInterface::class); + $events->getSharedManager()->will([$sharedEvents, 'reveal']); + + $events->setIdentifiers([SendResponseListener::class, SendResponseListener::class])->shouldBeCalled(); + $events->attach( + SendResponseEvent::EVENT_SEND_RESPONSE, + Argument::type(PhpEnvironmentResponseSender::class), + -1000 + )->shouldBeCalled(); + $events->attach( + SendResponseEvent::EVENT_SEND_RESPONSE, + Argument::type(SimpleStreamResponseSender::class), + -3000 + )->shouldBeCalled(); + $events->attach( + SendResponseEvent::EVENT_SEND_RESPONSE, + Argument::type(HttpResponseSender::class), + -4000 + )->shouldBeCalled(); + + $container = $this->prophesize(ContainerInterface::class); + $container->get('EventManager')->will([$events, 'reveal']); + + $factory = new SendResponseListenerFactory(); + $listener = $factory($container->reveal()); + $this->assertInstanceOf(SendResponseListener::class, $listener); + $this->assertSame($events->reveal(), $listener->getEventManager()); + } +}