prophesize(Application::class); $application->getEventManager()->willReturn($eventManager); $event = new MvcEvent(); $event->setApplication($application->reveal()); $guard = new DummyGuard(); $guard->attach($eventManager); $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function (MvcEvent $event) { $event->setParam('first-listener', true); }); $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function (MvcEvent $event) { $event->setParam('second-listener', true); }); // attach listener with lower priority than DummyGuard $eventManager->attach(MvcEvent::EVENT_ROUTE, function (MvcEvent $event) { $this->fail('should not be called, because guard should stop propagation'); }, DummyGuard::EVENT_PRIORITY - 1); $event->setName(MvcEvent::EVENT_ROUTE); $eventManager->triggerEvent($event); $this->assertTrue($event->getParam('first-listener')); $this->assertTrue($event->getParam('second-listener')); $this->assertTrue($event->propagationIsStopped()); } }