comment('I execute function "' . $functionName . '" of class "' . (is_object($className) ? get_class($className) : $className) . '" with ' . count($methodParams) . ' method-params, ' . count($constructParams) . ' constuctor-params and ' . count($mocks) . ' mocked class-methods/params' ); $class = new \ReflectionClass($className); $method = $class->getMethod($functionName); $method->setAccessible(true); if (is_object($className)) { $reflectedClass = $className; } elseif (empty($constructParams)) { $reflectedClass = Stub::make($className, $mocks); } else { $reflectedClass = Stub::construct($className, $constructParams, $mocks); } return $method->invokeArgs($reflectedClass, $methodParams); } }