setRedirectId((string) $redirectId); [$hitObject, $pageObject, $leadObject] = [ (new Hit())->setCode(7), (new Page())->setAlias('james_bond'), (new Lead())->setId($leadId), ]; $hitRepoMock = $this->createMock(HitRepository::class); $hitRepoMock ->expects($this->once()) ->method('find') ->with($hitId) ->willReturn($hitObject); $pageRepoMock = $this->createMock(PageRepository::class); $pageRepoMock->expects($this->once()) ->method('find') ->with($pageId) ->willReturn($pageObject); $redirectRepoMock = $this->createMock(RedirectRepository::class); $redirectRepoMock ->expects($this->never()) ->method('find') ->with($redirectId) ->willReturn($redirectObject); $leadRepoMock = $this->createMock(LeadRepository::class); $leadRepoMock ->expects($this->once()) ->method('find') ->with($leadId) ->willReturn($leadObject); $request = new Request(); $request->query->set('testMe', 'I am here'); /** @var MockObject|PageModel $pageModelMock */ $pageModelMock = $this->createMock(PageModel::class); $pageModelMock ->expects($this->exactly(1)) ->method('processPageHit') ->with($hitObject, $pageObject, $request, $leadObject, false, false); $message = new PageHitNotification($hitId, $request, false, false, $pageId, $leadId); /** @var MockObject|LoggerInterface $loggerMock */ $loggerMock = $this->createMock(LoggerInterface::class); $handler = new PageHitNotificationHandler( $pageRepoMock, $hitRepoMock, $leadRepoMock, $loggerMock, $redirectRepoMock, $pageModelMock ); $handler->__invoke($message); } }