/** * @covers Respect\Rest\Router::__call * @covers Respect\Rest\Router::factoryRoute */ public function testMagicConstructorCanRouteToFactoriesThatReturnInstancesOfAClass() { $router = new Router(); eval('class MockRoutable implements Respect\\Rest\\Routable{ public function GET() {} }'); eval('class FactoryClass { public static function factoryMethod() { return new MockRoutable(); } }'); $factoryRoute = $router->get('/', 'FactoryClass', array('FactoryClass', 'factoryMethod')); $concreteFactoryRoute = $router->factoryRoute('GET', '/', 'FactoryClass', array('FactoryClass', 'factoryMethod')); $this->assertInstanceOf('Respect\\Rest\\Routes\\Factory', $factoryRoute, 'Returned result from a magic constructor in this case should return a Routes\\Factory'); $this->assertEquals($factoryRoute, $concreteFactoryRoute, 'The magic and concrete instances of Routes\\Factory should be equivalent'); }