public function resolveIteratesOverTheRegisteredRoutesAndReturnsTheResolvedUriPathIfAny()
{
$router = $this->getAccessibleMock(Router::class, ['createRoutesFromConfiguration']);
$this->inject($router, 'routerCachingService', $this->mockRouterCachingService);
$this->inject($router, 'systemLogger', $this->mockSystemLogger);
$routeValues = ['foo' => 'bar'];
$route1 = $this->getMockBuilder(Route::class)->disableOriginalConstructor()->setMethods(['resolves'])->getMock();
$route1->expects($this->once())->method('resolves')->with($routeValues)->will($this->returnValue(false));
$route2 = $this->getMockBuilder(Route::class)->disableOriginalConstructor()->setMethods(['resolves', 'getResolvedUriPath'])->getMock();
$route2->expects($this->once())->method('resolves')->with($routeValues)->will($this->returnValue(true));
$route2->expects($this->atLeastOnce())->method('getResolvedUriPath')->will($this->returnValue('route2'));
$route3 = $this->getMockBuilder(Route::class)->disableOriginalConstructor()->setMethods(['resolves'])->getMock();
$mockRoutes = [$route1, $route2, $route3];
$router->expects($this->once())->method('createRoutesFromConfiguration');
$router->_set('routes', $mockRoutes);
$matchingRequestPath = $router->resolve($routeValues);
$this->assertSame('route2', $matchingRequestPath);
}