/** * @param string $classname * @param string $method * @param array $arguments * * @return Fracture\MethodNotVisibleException */ public function methodNotVisible($classname, $method, array $arguments = array()) { $instantiator = new Instantiator(); $subject = $instantiator->instantiate($classname); $message = sprintf('Method %s not visible.', $this->presenter->presentString($classname . '::' . $method)); return new Fracture\MethodNotVisibleException($message, $subject, $method, $arguments); }
/** * @param string $method * @param array $arguments * * @return mixed */ public function during($method, array $arguments = array()) { if ($method === '__construct') { $this->subject->beAnInstanceOf($this->wrappedObject->getClassname(), $arguments); $instantiator = new Instantiator(); $object = $instantiator->instantiate($this->wrappedObject->getClassname()); } else { $object = $this->wrappedObject->instantiate(); } return $this->runDuring($object, $method, $arguments); }
/** * @return mixed */ public function duringInstantiation() { if ($factoryMethod = $this->wrappedObject->getFactoryMethod()) { $method = is_array($factoryMethod) ? $factoryMethod[1] : $factoryMethod; } else { $method = '__construct'; } $instantiator = new Instantiator(); $object = $instantiator->instantiate($this->wrappedObject->getClassName()); return $this->runDuring($object, $method, $this->wrappedObject->getArguments()); }
/** * @param string $alias * @param mixed $subject * @param array $arguments * @param WrappedObject $wrappedObject * * @return boolean * * @throws \Exception * @throws \PhpSpec\Exception\Example\ErrorException * @throws \Exception * @throws \PhpSpec\Exception\Fracture\FractureException */ public function match($alias, $subject, array $arguments = array(), WrappedObject $wrappedObject = null) { try { $wrapped = $subject->getWrappedObject(); } catch (ErrorException $e) { throw $e; } catch (FractureException $e) { throw $e; } catch (Exception $e) { if (null !== $wrappedObject && $wrappedObject->getClassName()) { $instantiator = new Instantiator(); $wrapped = $instantiator->instantiate($wrappedObject->getClassName()); } } return $this->getExpectation()->match($alias, $wrapped, $arguments); }
/** * @return object */ private function makeSureWeHaveASubject() { if (null === $this->subject && $this->wrappedObject->getClassname()) { $instantiator = new Instantiator(); return $instantiator->instantiate($this->wrappedObject->getClassname()); } return $this->subject; }