Ejemplo n.º 1
0
 /**
  * @param string $methodName
  * @return Spy
  */
 public function spy($methodName)
 {
     $context = $this->_createContext($methodName);
     $this->_manager->removeByContext($context);
     $invokable = new Spy();
     $override = new Override($context, $invokable);
     $this->_manager->add($override);
     return $invokable;
 }
Ejemplo n.º 2
0
 /**
  * @param string $name
  * @param array  $arguments
  * @return mixed
  * @throws Exception
  */
 private static function _callStaticMethod($name, array $arguments)
 {
     $classDefinition = new ClassDefinition(get_called_class());
     $originalMethod = $classDefinition->findOriginalMethod($name);
     $manager = Manager::getInstance();
     $classOverrides = new ClassOverrides($manager, get_called_class());
     $override = $classOverrides->find($name);
     if ($override) {
         $invokable = $override->getInvokable();
         if ($invokable instanceof Spy) {
             $returnValue = null;
             if ($originalMethod) {
                 $returnValue = call_user_func_array($originalMethod, $arguments);
             }
             $invokable->addInvocation(null, $arguments, $returnValue);
             return $returnValue;
         }
         if ($invokable instanceof Stub) {
             return $invokable->invoke(null, $arguments);
         }
         throw new Exception('Unsupported invokable');
     }
     if ($originalMethod) {
         return call_user_func_array($originalMethod, $arguments);
     }
     throw new Exception('Cannot find method');
 }
Ejemplo n.º 3
0
 /**
  * @param string $name
  */
 public function unmockMethod($name)
 {
     $manager = Manager::getInstance();
     $classOverrides = new ClassOverrides($manager, $this->getClassName());
     $classOverrides->remove($name);
 }