コード例 #1
0
 /**
  * Returns a mock object for the specified class.
  *
  * @param  string  $originalClassName
  * @param  array   $methods
  * @param  array   $arguments
  * @param  string  $mockClassName
  * @param  boolean $callOriginalConstructor
  * @param  boolean $callOriginalClone
  * @param  boolean $callAutoload
  * @return PHPUnit_Framework_MockObject_MockObject
  * @throws InvalidArgumentException
  * @since  Method available since Release 3.0.0
  */
 protected function getMock($originalClassName, $methods = array(), 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 (!is_array($methods) && !is_null($methods)) {
         throw new InvalidArgumentException();
     }
     if ($mockClassName != '' && class_exists($mockClassName, FALSE)) {
         throw new PHPUnit_Framework_Exception(sprintf('Class "%s" already exists.', $mockClassName));
     }
     $mock = PHPUnit_Framework_MockObject_Generator::generate($originalClassName, $methods, $mockClassName, $callOriginalClone, $callAutoload);
     if (!class_exists($mock['mockClassName'], FALSE)) {
         eval($mock['code']);
     }
     if ($callOriginalConstructor && !interface_exists($originalClassName, $callAutoload)) {
         if (count($arguments) == 0) {
             $mockObject = new $mock['mockClassName']();
         } else {
             $mockClass = new ReflectionClass($mock['mockClassName']);
             $mockObject = $mockClass->newInstanceArgs($arguments);
         }
     } else {
         // Use a trick to create a new object of a class
         // without invoking its constructor.
         $mockObject = unserialize(sprintf('O:%d:"%s":0:{}', strlen($mock['mockClassName']), $mock['mockClassName']));
     }
     $this->mockObjects[] = $mockObject;
     return $mockObject;
 }
コード例 #2
0
 private static function generateMockClass($name, $extends)
 {
     $mock_class = \PHPUnit_Framework_MockObject_Generator::generate($extends, null, $name);
     eval($mock_class['code']);
 }