public function findByHostInvokesTheDomainMatchingStrategyToFindDomainsMatchingTheGivenHost() { $mockDomains = array(); $mockDomains[] = $this->getMockBuilder(Domain::class)->disableOriginalConstructor()->getMock(); $mockDomains[] = $this->getMockBuilder(Domain::class)->disableOriginalConstructor()->getMock(); $mockDomains[] = $this->getMockBuilder(Domain::class)->disableOriginalConstructor()->getMock(); $expectedDomains = array($mockDomains[0], $mockDomains[2]); $mockDomainMatchingStrategy = $this->getMockBuilder(DomainMatchingStrategy::class)->disableOriginalConstructor()->getMock(); $mockDomainMatchingStrategy->expects($this->any())->method('getSortedMatches')->with('myhost', $mockDomains)->will($this->returnValue($expectedDomains)); $mockResult = $this->createMock(QueryResultInterface::class); $mockResult->expects($this->once())->method('toArray')->will($this->returnValue($mockDomains)); $domainRepository = $this->getAccessibleMock(DomainRepository::class, array('findAll'), array(), '', false); $domainRepository->expects($this->once())->method('findAll')->will($this->returnValue($mockResult)); $domainRepository->_set('domainMatchingStrategy', $mockDomainMatchingStrategy); $actualDomains = $domainRepository->findByHost('myhost'); $this->assertSame($expectedDomains, $actualDomains); }