Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- Merge [4595].
  • Loading branch information
sebastianbergmann committed Feb 1, 2009
1 parent d5b1e3a commit 1e4efc6
Showing 1 changed file with 55 additions and 1 deletion.
56 changes: 55 additions & 1 deletion PHPUnit/Framework/TestCase.php
Expand Up @@ -891,14 +891,15 @@ protected function setLocale()
/** /**
* Returns a mock object for the specified class. * Returns a mock object for the specified class.
* *
* @param string $className * @param string $originalClassName
* @param array $methods * @param array $methods
* @param array $arguments * @param array $arguments
* @param string $mockClassName * @param string $mockClassName
* @param boolean $callOriginalConstructor * @param boolean $callOriginalConstructor
* @param boolean $callOriginalClone * @param boolean $callOriginalClone
* @param boolean $callAutoload * @param boolean $callAutoload
* @return object * @return object
* @throws InvalidArgumentException
* @since Method available since Release 3.0.0 * @since Method available since Release 3.0.0
*/ */
protected function getMock($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE) protected function getMock($originalClassName, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE)
Expand Down Expand Up @@ -957,6 +958,59 @@ protected function getMock($originalClassName, $methods = array(), array $argume
return $mockObject; return $mockObject;
} }


/**
* Returns a mock object for the specified abstract class with all abstract
* methods of the class mocked. Concrete methods are not mocked.
*
* @param string $originalClassName
* @param array $arguments
* @param string $mockClassName
* @param boolean $callOriginalConstructor
* @param boolean $callOriginalClone
* @param boolean $callAutoload
* @return object
* @since Method available since Release 3.4.0
* @throws InvalidArgumentException
*/
protected function getMockForAbstractClass($originalClassName, array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE)
{
if (!is_string($originalClassName)) {
throw PHPUnit_Util_InvalidArgumentHelper::factory(1, 'string');
}

if (!is_string($mockClassName)) {
throw PHPUnit_Util_InvalidArgumentHelper::factory(4, 'string');
}

if (class_exists($originalClassName, $callAutoload)) {
$methods = array();
$reflector = new ReflectionClass($originalClassName);

foreach ($reflector->getMethods() as $method) {
if ($method->isAbstract()) {
$methods[] = $method->getName();
}
}

return $this->getMock(
$originalClassName,
$methods,
$arguments,
$mockClassName,
$callOriginalConstructor,
$callOriginalClone,
$callAutoload
);
} else {
throw new RuntimeException(
sprintf(
'Class "%s" does not exist.',
$originalClassName
)
);
}
}

/** /**
* Returns a mock object based on the given WSDL file. * Returns a mock object based on the given WSDL file.
* *
Expand Down

0 comments on commit 1e4efc6

Please sign in to comment.